Truezip使用实例

Truezip东西做的好,可惜帮助写的不咋地,压缩和解压缩的示例都没提供好。

 

压缩文件的例子

File src = new File("abc.txt");
File dst = new File("abc.zip/abc.txt");
boolean success = src.copyTo(dst);
解压文件的例子

        File src = new File("xyz.zip/xyz.txt");
        File dst = new File("xyz.txt");
        boolean success = src.copyTo(dst);
解决中文文件名问题的例子

import de.schlichtherle.io.ArchiveDetector;
import de.schlichtherle.io.DefaultArchiveDetector;
import de.schlichtherle.io.archive.tar.TarBZip2Driver;
import de.schlichtherle.io.archive.tar.TarDriver;
import de.schlichtherle.io.archive.tar.TarGZipDriver;
import de.schlichtherle.io.archive.zip.CheckedZip32Driver;


public class ZipTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int a = zipSingleFile("D:\\ziptest\\中文haha.txt", "D:\\ziptest\\中文呵呵.zip");
        int b = unzipSingleFile("D:\\ziptest\\中文呵呵.zip", "D:\\ziptest\\中文嘿嘿.txt");
    }

    
    /**
     * 压缩一个文件
     * 
     * @param srcFileName
     * @param zipFileName
     * @return
     */
    public static int zipSingleFile(String srcFileName, String zipFileName) {
        return zipSingleFile(srcFileName, zipFileName, "GBK");
    }

    public static int zipSingleFile(String srcFileName, String zipFileName,
            String encoding) {
        ArchiveDetector detector = new DefaultArchiveDetector(
                ArchiveDetector.ALL, new Object[] { "zip",
                        new CheckedZip32Driver(encoding), "tar",
                        new TarDriver(encoding), "tgz|tar.gz",
                        new TarGZipDriver(encoding), "tbz|tar.bz2",
                        new TarBZip2Driver(encoding) });

        String srcShortFilename = srcFileName.substring(srcFileName
                .lastIndexOf('\\'));

        boolean result = new de.schlichtherle.io.File(srcFileName, detector)
                .copyTo(new de.schlichtherle.io.File(zipFileName + "/"
                        + srcShortFilename, detector));
        if (result)
            return 0;
        else
            return -1;
    }

    /**
     * 解压一个文件
     * 
     * @param srcFileName
     * @param destFileName
     * @return
     */
    public static int unzipSingleFile(String srcFileName, String destFileName) {
        return unzipSingleFile(srcFileName, destFileName, "GBK");
    }

    public static int unzipSingleFile(String srcZipFileName,
            String destFileName, String encoding) {

        ArchiveDetector detector = new DefaultArchiveDetector(
                ArchiveDetector.ALL, new Object[] { "zip",
                        new CheckedZip32Driver(encoding), "tar",
                        new TarDriver(encoding), "tgz|tar.gz",
                        new TarGZipDriver(encoding), "tbz|tar.bz2",
                        new TarBZip2Driver(encoding) });

        de.schlichtherle.io.File zipfile = new de.schlichtherle.io.File(
                srcZipFileName, detector);
        if (!zipfile.isArchive())
            return -1;
        String files[] = zipfile.list();
        if (files == null || files.length == 0) {
            return -2;
        }
        boolean result = new de.schlichtherle.io.File(zipfile, files[0],
                detector).copyTo(new de.schlichtherle.io.File(destFileName,
                detector));
        if (result)
            return 0;
        else
            return -3;
    }
}

压缩目录的时候使用copyAllTo等方法即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值