今天看了一下think in java 的压缩和解压这块,感觉用到的挺多的,做个笔记
/**
* Project Name:mynio
* File Name:ZipCompress.java
* Package Name:com.zsy.zip
* Date:2016-8-22下午10:04:04
* Copyright (c)
*
*/
package com.zsy.zip;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Enumeration;
import java.util.zip.Adler32;
import java.util.zip.CheckedInputStream;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipCompress
{
/**
* main:(这里用一句话描述这个方法的作用). <br/>
* @author syzhao
* @param args
* @throws Exception
* @since JDK 1.6
*/
public static void main(String[] args)
throws Exception
{
//文件输出流 在这里我直接创建好了一个test.zip 当然可以动态创建,这里不多说了
FileOutputStream fos = new FileOutputStream(new File("D:/test.zip"));
//校验过滤流,,顾名思义 于维护数据校验和用于维护数据完整性的 Checksum有两种类型:Adler32(快一些)和CRC32(慢一些,但更准确) 根据需要衡量一下
CheckedOutputStream cos = new CheckedOutputStream(fos, new Adler32());
//压缩输出流
ZipOutputStream zos = new ZipOutputStream(cos);
//缓冲
BufferedOutputStream bos = new BufferedOutputStream(zos);
//注释
zos.setComment("这是一个测试");
//对于每一个要要加入压缩档案的文件,都必须调用putNextEntry,并出入一个ZipEntry对象;至于有什么用自行百度,,,,,
zos.putNextEntry(new ZipEntry("WeatherWS11.js"));//WeatherWS11.js 这个是打开zip文件后看到的文件名称,可以测试一下
//缓冲reader
// BufferedReader br = new BufferedReader(new FileReader(new File("D:/WeatherWS.js")));
//读取要压缩的文件内容,可以注释掉,,
/*int c;
while ((c = br.read()) != -1)
{
bos.write(c);
}
br.close();*/
System.err.println("Checksum:" + cos.getChecksum().getValue());
bos.close();
/************************以上输出zip,结束**************************/
/************************以下读取zip,开始**************************/
System.out.println("读取文件:");
//文件输入流
FileInputStream fis = new FileInputStream(new File("D:/test.zip"));
//校验过滤流,,顾名思义 于维护数据校验和用于维护数据完整性的 Checksum有两种类型:Adler32(快一些)和CRC32(慢一些,但更准确) 根据需要衡量一下
CheckedInputStream cis = new CheckedInputStream(fis, new Adler32());
//zip流
ZipInputStream zis = new ZipInputStream(cis);
//缓冲
BufferedInputStream bis = new BufferedInputStream(zis);
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null)
{
System.out.println("rend file:" + ze);
int x;
while ((x = bis.read()) != -1)
{
// System.out.println(x);
}
}
bis.close();
/***************解压结束******************************/
//解压更简单的方法
ZipFile zf = new ZipFile("D:/test.zip");
Enumeration e = zf.entries();
while (e.hasMoreElements())
{
ZipEntry z = (ZipEntry)e.nextElement();
System.out.println("file:" + z);
}
zf.close();
}
}