public static void compress(String sourceFile, String targetFile) {
try (OutputStream fos = new FileOutputStream(targetFile);
OutputStream bos = new BufferedOutputStream(fos);
ArchiveOutputStream aos = new ZipArchiveOutputStream(bos);) {
Path dirPath = Paths.get(sourceFile);
Files.walkFileTree(dirPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
ArchiveEntry entry = new ZipArchiveEntry(dir.toFile(), dirPath.relativize(dir).toString());
aos.putArchiveEntry(entry);
aos.closeArchiveEntry();
return super.preVisitDirectory(dir, attrs);
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
ArchiveEntry entry = new ZipArchiveEntry(
file.toFile(), dirPath.relativize(file).toString());
aos.putArchiveEntry(entry);
FileInputStream in = new FileInputStream(file.toFile());
IOUtils.copy(in, aos);
aos.closeArchiveEntry();
IOUtils.closeQuietly(in);
return super.visitFile(file, attrs);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
JAVA使用commons-compress压缩文件夹
最新推荐文章于 2024-04-30 10:21:34 发布