Java代码实现,将本地多个文件打包后压缩并发给客户端。
时间: 2023-01-16 17:14:52 浏览: 186
Java实现多文件的文件的压缩和下载
4星 · 用户满意度95%
下面是在 Java 中将多个文件打包成 ZIP 压缩文件并发送给客户端的示例代码:
```
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FileZipServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取需要打包的文件列表
File[] files = getFilesToZip();
// 设置响应头,提示浏览器下载文件
response.setHeader("Content-Disposition", "attachment; filename=files.zip");
// 创建 ZIP 输出流
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
// 循环将文件写入 ZIP 压缩文件中
for (File file : files) {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) {
// 创建 ZIP 条目
ZipEntry entry = new ZipEntry(file.getName());
zos.putNextEntry(entry);
// 写入文件到 ZIP 压缩文件中
int count;
byte[] data = new byte[1024];
while ((count = bis.read(data, 0, 1024)) != -1) {
zos.write(data, 0, count);
}
}
}
// 关闭 ZIP 输出流
zos.close();
}
private File[] getFilesToZip() {
// 这里应该是从本地文件系统中获取需要打包的文件列表的逻辑
return new File[] {new File("file1.txt"), new File("file2.txt")};
}
}
```
在这个例子中,我们使用了 `ZipOutputStream` 类来创建 ZIP 压缩文件,并使用
阅读全文