Java已知Map(String fileName,List<String> filePathList) 将文件下载到压缩包里个压缩包以fileName命名,最后,将所有压缩包放进一个压缩包里
时间: 2023-11-27 11:50:18 浏览: 90
你可以使用Java中的ZipOutputStream类来实现将多个文件压缩成一个压缩包的操作。具体实现步骤如下:
1. 创建一个ZipOutputStream对象,用于将多个压缩包压缩成一个压缩包。
```java
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(fileName+".zip"));
```
2. 遍历filePathList列表中的所有文件路径,将每个文件压缩成一个单独的压缩包,并将这些压缩包放在一个名为fileName的文件夹下。
```java
for(String filePath : filePathList){
// 获取文件名
String fileName = new File(filePath).getName();
// 创建一个新的压缩包
ZipOutputStream subZipOut = new ZipOutputStream(new FileOutputStream(fileName+".zip"));
// 将当前文件添加到压缩包中
FileInputStream fileIn = new FileInputStream(filePath);
subZipOut.putNextEntry(new ZipEntry(fileName));
byte[] buffer = new byte[1024];
int len;
while ((len = fileIn.read(buffer)) > 0) {
subZipOut.write(buffer, 0, len);
}
// 关闭当前压缩包的输入流和输出流
fileIn.close();
subZipOut.closeEntry();
subZipOut.close();
// 将当前压缩包添加到主压缩包中
FileInputStream subFileIn = new FileInputStream(fileName+".zip");
zipOut.putNextEntry(new ZipEntry(fileName+"/"+fileName+".zip"));
byte[] subBuffer = new byte[1024];
int subLen;
while ((subLen = subFileIn.read(subBuffer)) > 0) {
zipOut.write(subBuffer, 0, subLen);
}
// 关闭当前压缩包的输入流和输出流
subFileIn.close();
zipOut.closeEntry();
}
```
3. 关闭ZipOutputStream对象。
```java
zipOut.close();
```
这样,就可以将多个文件压缩成一个压缩包,并将这些压缩包放在一个名为fileName的文件夹下,最终生成一个名为fileName.zip的压缩包。
阅读全文