ZipUtil(zip压缩工具)

ZipUtilzip压缩工具)

zip(byte[ ] bs) :byte[ ]

  以ZIP方式压缩二进制数组。

代码实例

byte[] bs="泽元".getBytes();

byte[] b_1=ZipUtil.zip(bs);

bs: [-26, -77, -67, -27, -123, -125]

b_1: [120, -100, 123, -74, 121, -17, -45, -42, 102, 0, 16, 25, 4, 68]

UTF-8编码形式输出时为乱码。

  

gzip(byte[ ] bs) :byte[ ]

  以GZIP方式压缩二进制数组。

代码实例

byte[] bs={1,2,3,4,12,123,125};

byte[] b_2=ZipUtil.gzip(bs);

bs: [-26, -77, -67, -27, -123, -125]

b_2: [31, -117, 8, 0, 0, 0, 0, 0, 0, 0, 123, -74, 121, -17, -45, -42, 102, 0, 96, 17, -52, 84, 6, 0, 0, 0]

  

zip(String srcFile, String destFile)

  以ZIP方式压缩文件。

代码实例

String srcFile="G:" + File.separator + "string.txt";

String destFile="G:" + File.separator + "string.zip";

ZipUtil.zip(srcFile,destFile);

  

zip(File srcFile, OutputStream destStream)

  以ZIP方式压缩文件并输出到指定流。

代码实例

File srcFile = new File("G:" + File.separator + "string.txt");

File destFile=new File("G:" + File.separator + "string.zip");

OutputStream destStream = new FileOutputStream(destFile);

ZipUtil.zip(srcFile,destStream);

  

zipBatch(String base, String[] srcFiles, String destFile)

  将一批文件(文件夹)压缩到一个ZIP文件里,压缩后的路径以base参数为起点。

代码实例

String base="G:";

String f1="G:" + File.separator + "string.txt";

String f2="G:" + File.separator + "string_1.txt";

String f3="G:" + File.separator + "string_2.txt";

String[] srcFiles={f1 ,f2 ,f3 };

String destFile=File.separator + "stringAll.zip";

ZipUtil.zipBatch(base,srcFiles, destFile);

  

zipBatch(String base, String[ ] srcFiles, OutputStream destStream)

  将一批文件(文件夹)压缩到一个流里,压缩后的路径以base参数为起点。

代码实例

String base="G:";

String s1="G:" + File.separator + "string.txt";

String s2="G:" + File.separator + "string_1.txt";

String s3="G:" + File.separator + "string_2.txt";

String[] srcFiles={s1 ,s2 ,s3 };

String destFile="G:" + File.separator + "stringAll.zip";

OutputStream destStream = new FileOutputStream(destFile);

ZipUtil.zipBatch(base,srcFiles, destStream);

  

zipBatch(String base, File[ ] srcFiles, OutputStream destStream)

  将一批文件(文件夹)压缩到一个指定输出流里,压缩后的路径以base参数为起点。

代码实例

String base="G:";

String s1="G:" + File.separator + "string.txt";

String s2="G:" + File.separator + "string_1.txt";

String s3="G:" + File.separator + "string_2.txt";

File f1=new File(s1);

File f2=new File(s2);

File f3=new File(s3);

File[] srcFiles={f1 ,f2 ,f3 };

String destFile="G:" + File.separator + "stringAll.zip";

OutputStream destStream = new FileOutputStream(destFile);

ZipUtil.zipBatch(base,srcFiles, destStream);

  

zipBatch(String[ ] srcFiles, String destFile)

  将一批文件(文件夹)压缩到一个ZIP文件里,压缩后的路径以各文件(文件夹)自身为起点。

代码实例

String s1="G:" + File.separator + "string.txt";

String s2="G:" + File.separator + "string_1.txt";

String s3="G:" + File.separator + "string_2.txt";

String[] srcFiles={s1 ,s2 ,s3 };

String destFile=File.separator + "stringAll.zip";

ZipUtil.zipBatch(srcFiles, destFile);

  

zipBatch(String[] srcFiles, OutputStream destStream)

  将一批文件压缩到一个流里,压缩后的路径以各文件(文件夹)自身为起点。

代码实例

String s1="G:" + File.separator + "string.txt";

String s2="G:" + File.separator + "string_1.txt";

String s3="G:" + File.separator + "string_2.txt";

String[] srcFiles={s1 ,s2 ,s3 };

String destFile="G:" + File.separator + "stringAll.zip";

OutputStream destStream = new FileOutputStream(destFile);

ZipUtil.zipBatch(srcFiles, destStream);

  

zipBatch(File[ ] srcFiles, OutputStream destStream)

  将一批文件(文件夹)压缩到一个ZIP文件里,压缩后的路径以各文件(文件夹)自身为起点。

代码实例

String s1="G:" + File.separator + "string.txt";

String s2="G:" + File.separator + "string_1.txt";

String s3="G:" + File.separator + "string_2.txt";

File f1=new File(s1);

File f2=new File(s2);

File f3=new File(s3);

File[] srcFiles={f1 ,f2 ,f3 };

String destFile="G:" + File.separator + "stringAll.zip";

OutputStream destStream = new FileOutputStream(destFile);

ZipUtil.zipBatch(srcFiles, destStream);

  

zipStream(InputStream is, OutputStream os, String fileName)

  将InputStream以指定的文件名fileName压缩到一个OutputStream。

代码实例

String s1="G:" + File.separator + "string.txt";

String s2="G:" + File.separator+"string_1.zip";

File f1=new File(s1);

File f2=new File(s2);

InputStream srcFile=new FileInputStream(f1);

OutputStream destStream = new FileOutputStream(f2);

ZipUtil.zipStream(srcFile, destStream,"string_2.txt");

说明:在G盘根目录下,会得到一个名为“string_1.zip”的压缩包,而压缩包内有一个名为“string_2.txt”的文本文件。

  

unzip(byte[ ] bs) :byte[ ]

  将二进制数组解压缩。

代码实例

byte[] b_1= [120, -100, 123, -74, 121, -17, -45, -42, 102, 0, 16, 25, 4, 68]

byte[] unb_2=ZipUtil.unzip(b_1);

unb_2: [-26, -77, -67, -27, -123, -125]

UTF-8形式输出为:泽元

  

ungzip(byte[ ] bs) :byte[ ]

  GZIP解压缩。

代码实例

byte[] b_2= [31, -117, 8, 0, 0, 0, 0, 0, 0, 0, 123, -74, 121, -17, -45, -42, 102, 0, 96, 17, -52, 84, 6, 0, 0, 0]

byte[] unb_2=ZipUtil.ungzip(b_2);

unb_2: [-26, -77, -67, -27, -123, -125];

UTF-8形式输出为:泽元

  

unzip(String srcFileName, String destPath)

  文件解压缩。

代码实例

String srcFileName="G:" + File.separator + "stringAll.zip";

String destPath="G:"+File.separator;

ZipUtil.unzip(srcFileName, destPath);

  

getFileListInZip(String zipFileName) : Mapx<String, Long>

  获得ZIP文件内的文件清单,键值为文件大小。

代码实例

String srcFileName="G:" + File.separator + "stringAll.zip";

Mapx<String, Long> map=ZipUtil.getFileListInZip(srcFileName);

map为:{string_1.txt=144, string.txt=18, string_2.txt=15}

  //

readFileInZip(String zipFileName, String fileName) :byte[ ]

  读取ZIP文件,返回二进制数组。

代码实例

String zipFileName="G:" + File.separator + "string.zip";

String fileName="string.txt";

byte[]b= ZipUtil.readFileInZip(destFile, srcFile);

b为:[97, 61, 97, 13, 10, 98, 61, 98, 13, 10, 99, 61, 99, 13, 10, 100, 61, 100]

  

unzip(String srcFileName, String destPath, boolean isPath)

  解压缩到指定目录 如果isPathtrue:生成相对路径和目录 false:解压缩时不包含路径解压缩。

代码实例

String srcFileName="G:" + File.separator + "string.zip";

String destPath="G:"+File.separator;

ZipUtil.unzip(srcFileName, destPath, true);

 

hackIE