/** * 多文件压缩 * * @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(); } } }