Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
2010-11-05 00:54:57 来源:WEB开发网*
* @author jzj
*/
public class ZipCompress {
private static boolean isCreateSrcDir = true;//是否创建源目录
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String src = "m:/新建文本文档.txt";//指定压缩源,可以是目录或文件
String decompressDir = "e:/tmp/decompress";//解压路径
String archive = "e:/tmp/test.zip";//压缩包路径
String comment = "Java Zip 测试.";//压缩包注释
//----压缩文件或目录
writeByApacheZipOutputStream(src, archive, comment);
/*
* 读压缩文件,注释掉,因为使用的是apache的压缩类,所以使用java类库中
* 解压类时出错,这里不能运行
*/
//readByZipInputStream();
//----使用apace ZipFile读取压缩文件
readByApacheZipFile(archive, decompressDir);
}
public static void writeByApacheZipOutputStream(String src, String archive,
String comment) throws FileNotFoundException, IOException {
//----压缩文件:
FileOutputStream f = new FileOutputStream(archive);
//使用指定校验和创建输出流
CheckedOutputStream csum = new CheckedOutputStream(f, new CRC32());
ZipOutputStream zos = new ZipOutputStream(csum);
//支持中文
zos.setEncoding("GBK");
BufferedOutputStream out = new BufferedOutputStream(zos);
//设置压缩包注释
zos.setComment(comment);
//启用压缩
zos.setMethod(ZipOutputStream.DEFLATED);
//压缩级别为最强压缩,但时间要花得多一点
zos.setLevel(Deflater.BEST_COMPRESSION);
File srcFile = new File(src);
if (!srcFile.exists() || (srcFile.isDirectory() && srcFile.list().length == 0)) {
throw new FileNotFoundException(
更多精彩
赞助商链接