WEB开发网
开发学院手机开发Android 开发 Android 利用Java实现压缩与解压缩(zip、gzip)支... 阅读

Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径

 2010-11-05 00:54:57 来源:WEB开发网   
核心提示:* @param decompressDir 解压路径* @throws IOException* @throws FileNotFoundException* @throws ZipException*/public static void readByApacheZipFile(String archive, St

* @param decompressDir 解压路径

* @throws IOException

* @throws FileNotFoundException

* @throws ZipException

*/

public static void readByApacheZipFile(String archive, String decompressDir)

throws IOException, FileNotFoundException, ZipException {

BufferedInputStream bi;

ZipFile zf = new ZipFile(archive, "GBK");//支持中文

Enumeration e = zf.getEntries();

while (e.hasMoreElements()) {

ZipEntry ze2 = (ZipEntry) e.nextElement();

String entryName = ze2.getName();

String path = decompressDir + "/" + entryName;

if (ze2.isDirectory()) {

System.out.println("正在创建解压目录 - " + entryName);

File decompressDirFile = new File(path);

if (!decompressDirFile.exists()) {

decompressDirFile.mkdirs();

}

} else {

System.out.println("正在创建解压文件 - " + entryName);

String fileDir = path.substring(0, path.lastIndexOf("/"));

File fileDirFile = new File(fileDir);

if (!fileDirFile.exists()) {

fileDirFile.mkdirs();

}

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(

decompressDir + "/" + entryName));

bi = new BufferedInputStream(zf.getInputStream(ze2));

byte[] readContent = new byte[1024];

int readCount = bi.read(readContent);

while (readCount != -1) {

bos.write(readContent, 0, readCount);

readCount = bi.read(readContent);

}

bos.close();

}

}

zf.close();

}

/**

* 使用 java api 中的 ZipInputStream 类解压文件,但如果压缩时采用了

* org.apache.tools.zip.ZipOutputStream时,而不是 java 类库中的

* java.util.zip.ZipOutputStream时,该方法不能使用,原因就是编码方

上一页  7 8 9 10 11 12 13 14 15  下一页

Tags:Android 利用 Java

编辑录入:coldstar [复制链接] [打 印]
赞助商链接