gzip是目前广泛应用的一种压缩方式,它具有很高的压缩比和压缩效率.在sun公司发布的jdk中包含了java.util.zip包,对gzip提供了直接支持.使用java语言可以很方便的实现gzip压缩和解压缩.以下是一个压缩和解压缩的最简程序.
(压缩:gzip.java)
import java.io.*; import java.util.zip.*; public class gzip { public static void main(String[] args) { if (args.length !=2) { System.out.println("Usage:java gzip "); System.exit(1); } try { //打开需压缩文件作为文件输入流 FileInputStream fin=new FileInputStream(args[0]); //建立压缩文件输出流 FileOutputStream fout=new FileOutputStream(args[1]); //建立gzip压缩输出流 GZIPOutputStream gzout=new GZIPOutputStream(fout); byte[] buf=new byte[1024];//设定读入缓冲区尺寸 int num; while ((num=fin.read(buf)) != -1) { gzout.write(buf,0,num); } gzout.close();//!!!关闭流,必须关闭所有输入输出流.保证输入输出完整和释放系统资源. fout.close(); fin.close(); }catch(IOException e) { System.out.println(e); } } } (解压缩:unzip.java) import java.io.*; import java.util.zip.*; public class ungzip { public static void main(String[] args) { if (args.length !=2) { System.out.println("Usage:java ungzip "); System.exit(1); } try { //建立gzip压缩文件输入流 FileInputStream fin=new FileInputStream(args[0]); //建立gzip解压工作流 GZIPInputStream gzin=new GZIPInputStream(fin); //建立解压文件输出流 FileOutputStream fout=new FileOutputStream(args[1]); byte[] buf=new byte[1024]; int num; while ((num=gzin.read(buf,0,buf.length)) != -1) { fout.write(buf,0,num); } gzin.close(); fout.close(); fin.close(); }catch(IOException e) { System.out.println(e); } } } |