阅读量: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文件中。