java gzip如何压缩文件夹

avatar
作者
猴君
阅读量:0

在Java中,你可以使用java.util.zip包中的类来压缩文件夹。以下是一个示例代码,展示了如何压缩一个文件夹:

import java.io.*; import java.nio.file.*; import java.util.zip.*;  public class FolderGzip {     public static void main(String[] args) {         String folderToZip = "/path/to/folder";         String zipFilePath = "/path/to/output.zip";          try {             compressFolder(folderToZip, zipFilePath);         } catch (IOException e) {             e.printStackTrace();         }     }      public static void compressFolder(String folderPath, String zipFilePath) throws IOException {         // 创建一个文件输出流,写入ZIP文件         FileOutputStream fos = new FileOutputStream(zipFilePath);          // 创建一个ZIP输出流,写入到文件输出流中         ZipOutputStream zos = new ZipOutputStream(fos);          // 获取文件夹中的所有文件和子文件夹         Path rootPath = Paths.get(folderPath);         Files.walk(rootPath)              .filter(path -> !Files.isDirectory(path))              .forEach(path -> {                  try {                      // 创建一个ZIP条目,使用相对路径                      ZipEntry zipEntry = new ZipEntry(rootPath.relativize(path).toString());                      zos.putNextEntry(zipEntry);                       // 读取文件内容并将其写入ZIP输出流                      try (InputStream fis = Files.newInputStream(path)) {                          byte[] buffer = new byte[1024];                          int bytesRead;                          while ((bytesRead = fis.read(buffer)) != -1) {                              zos.write(buffer, 0, bytesRead);                          }                      }                       // 关闭ZIP条目,完成对该文件的压缩                      zos.closeEntry();                  } catch (IOException e) {                      e.printStackTrace();                  }              });          // 关闭ZIP输出流和文件输出流         zos.close();         fos.close();     } } 

在这个示例中,compressFolder方法接受要压缩的文件夹路径和输出的ZIP文件路径。它使用java.nio.file.Files.walk方法遍历文件夹中的所有文件和子文件夹,并使用java.util.zip.ZipOutputStream将它们添加到ZIP文件中。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!