Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
2010-11-05 00:54:57 来源:WEB开发网System.out.println("开始读压缩文件");
FileInputStream fi = new FileInputStream(archive);
CheckedInputStream csumi = new CheckedInputStream(fi, new CRC32());
ZipInputStream in2 = new ZipInputStream(csumi);
bi = new BufferedInputStream(in2);
java.util.zip.ZipEntry ze;//压缩文件条目
//遍历压缩包中的文件条目
while ((ze = in2.getNextEntry()) != null) {
String entryName = ze.getName();
if (ze.isDirectory()) {
System.out.println("正在创建解压目录 - " + entryName);
File decompressDirFile = new File(decompressDir + "/" + entryName);
if (!decompressDirFile.exists()) {
decompressDirFile.mkdirs();
}
} else {
System.out.println("正在创建解压文件 - " + entryName);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(
decompressDir + "/" + entryName));
byte[] buffer = new byte[1024];
int readCount = bi.read(buffer);
while (readCount != -1) {
bos.write(buffer, 0, readCount);
readCount = bi.read(buffer);
}
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,
更多精彩
赞助商链接