读书人

解压 汉语压缩包 和压缩包内有中文文件

发布时间: 2012-10-07 17:28:51 作者: rapoo

解压 中文压缩包 和压缩包内有中文文件的代码

最近在搞解压缩的问题,发现了用java.util.zip ?是可以解压压缩包,但是解压含有中文的压缩包就会报错。所以改用ant.jar来解决这个问题,代码如下:

?

?

?

import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import org.apache.tools.zip.ZipFile;public class ZipFileList{public static final int DEFAULT_BUFFER = 1024 * 4;public static long copy(InputStream aIn, OutputStream aOut, int aBufferSize)throws IOException{byte[] buffer = new byte[aBufferSize];int read = 0;long totalBytes = 0;while (-1 != (read = aIn.read(buffer))){aOut.write(buffer, 0, read);totalBytes += read;}return totalBytes;}public static long copy(InputStream aIn, OutputStream aOut)throws IOException{return copy(aIn, aOut, DEFAULT_BUFFER);}public static void unzip1(File zipFileName, File outputDirectory)throws Exception{ZipFile zf = null;try{zf = new ZipFile(zipFileName,"GBK");Enumeration en = zf.getEntries();while (en.hasMoreElements()){org.apache.tools.zip.ZipEntry entry = (org.apache.tools.zip.ZipEntry) en.nextElement();System.out.println(entry.getName());FileOutputStream out = null;try{System.out.println(entry.isDirectory());if (!entry.isDirectory()){File newFile = new File(outputDirectory,entry.getName());newFile.getParentFile().mkdirs();out = new FileOutputStream(newFile);copy(zf.getInputStream(entry), out);}}catch (Exception io){io.printStackTrace();throw io;}finally{if (out != null) out.close();}}}catch (IOException e){e.printStackTrace();}finally{try{if (zf != null) zf.close();}catch (IOException e){e.printStackTrace();}}}public static void main(String[] args){try{ZipFileList.unzip1(new File("F:/中文.zip"), new File("f:/a"));}catch (Exception e){e.printStackTrace();}System.out.println("OK");}}
?

?

上面的代码已经经过测试没有问题。如有问题请留言。望多交流。

?

?

读书人网 >编程

热点推荐