java文件压缩 zip gz

/**
 * 多文件压缩
 * 
 * @author Administrator
 * 
 */
public class ZipCompress {

	public static void main(String args[]) {
		String[] filepaths = { "D:\\zip1.txt", "D:\\zip2.txt" };
		try {
			FileOutputStream f = new FileOutputStream("D://test.zip");
			// 输出校验流,采用Adler32更快
			CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
			//创建压缩输出流
			ZipOutputStream zos = new ZipOutputStream(csum);
			BufferedOutputStream out = new BufferedOutputStream(zos);
			//设置Zip文件注释
			zos.setComment("A test of java Zipping");
			for (String s : filepaths) {
				System.out.println("Writing file " + s);
				//针对单个文件建立读取流
				BufferedReader bin = new BufferedReader(new FileReader(s));
				//ZipEntry ZIP 文件条目
				//putNextEntry 写入新条目,并定位到新条目开始处
				zos.putNextEntry(new ZipEntry(s));
				int c;
				while ((c = bin.read()) != -1) {
					out.write(c);
				}
				bin.close();
				out.flush();
			}
			out.close();
			FileInputStream fi = new FileInputStream("D://test.zip");
			CheckedInputStream csumi = new CheckedInputStream(fi, new Adler32());
			ZipInputStream in2 = new ZipInputStream(csumi);
			BufferedInputStream bis = new BufferedInputStream(in2);
			ZipEntry ze;
			while ((ze = in2.getNextEntry()) != null) {
				System.out.println("Reader File " + ze);
				int x;
				while ((x = bis.read()) != -1)
					System.out.println(x);
			}
			//利用ZipFile解压压缩文件
			ZipFile zf = new ZipFile("D:\\test.zip");
			Enumeration e = zf.entries();
			while(e.hasMoreElements()){
				ZipEntry ze2 = (ZipEntry) e.nextElement();
				System.out.println("File name : "+ze2);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

/**
 * 文件压缩
 * 把文件压缩成GZIP 单一的流数据 并不是互异的数据
 * GZIPOutputStream的使用
 * @author Administrator
 * 
 */
public class GzipPcompress {

	public static void main(String args[]) {
		try {
			BufferedReader in = new BufferedReader(new FileReader("D:\\gziptest.txt"));

			BufferedOutputStream out = new BufferedOutputStream(
					new GZIPOutputStream(new FileOutputStream("D:\\test.gz")));
			System.out.println("Writing file");
			int c;
			while ((c = in.read()) != -1) {
				out.write(c);
			}
			in.close();
			out.close();
			System.out.println("Reading file");
			BufferedReader in2 = new BufferedReader(new InputStreamReader(
					new GZIPInputStream(new FileInputStream("D:\\test.gz"))));
			String s;
			while((s=in2.readLine()) != null){
				System.out.println(s);
			}

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自see-you-again.iteye.com/blog/2237905