java 多文件压缩 压缩文件下载 实例
时间: 2023-08-04 19:05:31 浏览: 131
好的,我来为您解答。
首先,您可以使用 Java 中的 ZipOutputStream 类来进行多文件压缩。下面是一个简单的示例代码,演示如何将多个文件压缩成一个 ZIP 文件:
```java
import java.io.*;
import java.util.zip.*;
public class ZipExample {
public static void main(String[] args) {
try {
// 创建 ZIP 文件输出流
FileOutputStream fos = new FileOutputStream("example.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
// 待压缩的文件列表
String[] fileNames = {"file1.txt", "file2.txt", "file3.txt"};
// 遍历文件列表,将每个文件加入 ZIP 文件中
for (String fileName : fileNames) {
// 创建文件输入流
FileInputStream fis = new FileInputStream(fileName);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
// 读取文件内容并写入 ZIP 文件中
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
// 关闭文件输入流
fis.close();
}
// 关闭 ZIP 文件输出流
zos.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
接下来,您可以使用 Java 中的 HttpServletResponse 类来将 ZIP 文件下载到客户端。下面是一个示例代码,演示如何实现文件下载:
```java
import java.io.*;
import javax.servlet.http.*;
public class DownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取要下载的文件名
String fileName = request.getParameter("fileName");
// 设置响应头,告诉浏览器要下载的文件类型
response.setContentType("application/octet-stream");
// 设置响应头,告诉浏览器要下载的文件名
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 读取要下载的文件并写入响应输出流
FileInputStream fis = new FileInputStream(fileName);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
os.flush();
// 关闭文件输入流和响应输出流
fis.close();
os.close();
}
}
```
在您的网站中,您可以使用一个链接来触发文件下载:
```html
<a href="DownloadServlet?fileName=example.zip">Download ZIP</a>
```
当用户点击该链接时,浏览器将向服务器发送一个 GET 请求,DownloadServlet 将读取名为 example.zip 的文件并将其写入响应输出流,浏览器将显示一个文件下载对话框,用户可以选择保存或打开该文件。
阅读全文