实现打包下载且一个文件对应一个文件夹的Java代码
时间: 2024-02-18 12:02:02 浏览: 24
续上面的代码示例,继续完善:
```java
zipOutputStream.putNextEntry(new ZipEntry(directoryPath));
zipOutputStream.closeEntry();
for (File subFile : file.listFiles()) {
addFileToZip(zipOutputStream, subFile, directoryPath);
}
} else {
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
ZipEntry zipEntry = new ZipEntry(parentDirectory + file.getName());
zipOutputStream.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = bufferedInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, length);
}
bufferedInputStream.close();
zipOutputStream.closeEntry();
}
}
}
```
上述代码中,zipFiles()方法接收一个File数组和一个zip文件路径作为参数,将传入的文件数组打包成zip文件保存到指定路径中。addFileToZip()方法用于将单个文件或文件夹添加到zip文件中。方法中使用了递归的方式遍历文件夹中的所有文件,并根据每个文件的相对路径在zip文件中创建对应的文件夹和文件。在写入文件内容到zip文件时,使用了BufferedInputStream和BufferedOutputStream以提高文件读写效率。最后,记得关闭所有的输入输出流。