java – 使用Commons IO将目录压缩到zipfile中

前端之家收集整理的这篇文章主要介绍了java – 使用Commons IO将目录压缩到zipfile中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Java编程的初学者,目前正在编写一个必须能够压缩和解压缩.zip文件的应用程序.我可以使用以下代码使用内置的Java zip功能以及Apache Commons IO库解压缩Java中的zipfile:
  1. public static void decompressZipfile(String file,String outputDir) throws IOException {
  2. if (!new File(outputDir).exists()) {
  3. new File(outputDir).mkdirs();
  4. }
  5. ZipFile zipFile = new ZipFile(file);
  6. Enumeration<? extends ZipEntry> entries = zipFile.entries();
  7. while (entries.hasMoreElements()) {
  8. ZipEntry entry = entries.nextElement();
  9. File entryDestination = new File(outputDir,entry.getName());
  10. if (entry.isDirectory()) {
  11. entryDestination.mkdirs();
  12. } else {
  13. InputStream in = zipFile.getInputStream(entry);
  14. OutputStream out = new FileOutputStream(entryDestination);
  15. IoUtils.copy(in,out);
  16. IoUtils.closeQuietly(in);
  17. IoUtils.closeQuietly(out);
  18. }
  19. }
  20. }

除了我以前使用的外部库之外,我将如何从目录创建zip文件? (Java标准库和Commons IO)

解决方法

以下方法似乎成功地递归压缩目录:
  1. public static void compressZipfile(String sourceDir,String outputFile) throws IOException,FileNotFoundException {
  2. ZipOutputStream zipFile = new ZipOutputStream(new FileOutputStream(outputFile));
  3. compressDirectoryToZipfile(sourceDir,sourceDir,zipFile);
  4. IoUtils.closeQuietly(zipFile);
  5. }
  6.  
  7. private static void compressDirectoryToZipfile(String rootDir,String sourceDir,ZipOutputStream out) throws IOException,FileNotFoundException {
  8. for (File file : new File(sourceDir).listFiles()) {
  9. if (file.isDirectory()) {
  10. compressDirectoryToZipfile(rootDir,sourceDir + File.separator + file.getName(),out);
  11. } else {
  12. ZipEntry entry = new ZipEntry(sourceDir.replace(rootDir,"") + file.getName());
  13. out.putNextEntry(entry);
  14.  
  15. FileInputStream in = new FileInputStream(sourceDir + file.getName());
  16. IoUtils.copy(in,out);
  17. IoUtils.closeQuietly(in);
  18. }
  19. }
  20. }

正如我的压缩代码片段所示,我正在使用IoUtils.copy()来处理流数据传输.

猜你在找的Java相关文章