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 {
-
- 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");
- }
-
-
- 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;
- }
-
- 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等方法即可。