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

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

 2010-11-05 00:54:57 来源:WEB开发网   
核心提示:bos.close();}}bi.close();System.out.println("Checksum: " + csumi.getChecksum().getValue());}/*** 递归压缩** 使用 org.apache.tools.zip.ZipOutputStream 类进行压缩,

bos.close();

}

}

bi.close();

System.out.println("Checksum: " + csumi.getChecksum().getValue());

}

/**

* 递归压缩

*

* 使用 org.apache.tools.zip.ZipOutputStream 类进行压缩,它的好处就是支持中文路径,

* 而Java类库中的 java.util.zip.ZipOutputStream 压缩中文文件名时压缩包会出现乱码。

* 使用 apache 中的这个类与 java 类库中的用法是一新的,只是能设置编码方式了。

*

* @param zos

* @param bo

* @param srcFile

* @param prefixDir

* @throws IOException

* @throws FileNotFoundException

*/

private static void writeRecursive(ZipOutputStream zos, BufferedOutputStream bo,

File srcFile, String prefixDir) throws IOException, FileNotFoundException {

ZipEntry zipEntry;

String filePath = srcFile.getAbsolutePath().replaceAll("\\", "/").replaceAll(

"//", "/");

if (srcFile.isDirectory()) {

filePath = filePath.replaceAll("/$", "") + "/";

}

String entryName = filePath.replace(prefixDir, "").replaceAll("/$", "");

if (srcFile.isDirectory()) {

if (!"".equals(entryName)) {

System.out.println("正在创建目录 - " + srcFile.getAbsolutePath()

+ " entryName=" + entryName);

//如果是目录,则需要在写目录后面加上 /

zipEntry = new ZipEntry(entryName + "/");

zos.putNextEntry(zipEntry);

}

File srcFiles[] = srcFile.listFiles();

for (int i = 0; i < srcFiles.length; i++) {

writeRecursive(zos, bo, srcFiles[i], prefixDir);

}

} else {

System.out.println("正在写文件 - " + srcFile.getAbsolutePath() + " entryName="

+ entryName);

BufferedInputStream bi = new BufferedInputStream(new FileInputStream(srcFile));

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

Tags:Android 利用 Java

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