import java.io.*;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipUtils {
private static final int BUFSIZE = 2048;
public static void downloadZip(OutputStream outputStream, List<File> fileList) {
ZipOutputStream zipOutputStream = null;
try {
zipOutputStream = new ZipOutputStream(outputStream);
for (File file : fileList) {
ZipEntry zipEntry = new ZipEntry(file.getName());
zipOutputStream.putNextEntry(zipEntry);
byte[] buf = new byte[BUFSIZE];
int len;
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
while ((len = bufferedInputStream.read(buf)) != -1) {
zipOutputStream.write(buf, 0, len);
}
bufferedInputStream.close();
zipOutputStream.closeEntry();
}
zipOutputStream.finish();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭流
try {
if (zipOutputStream != null) {
zipOutputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
File[] files = file.listFiles();
List<File> fileList = new ArrayList<>();
for (int i = 0; i < files.length; i++) {
String fileurl = replacedPath + File.separator + files[i].getName();
File onefile = new File(fileurl);
fileList.add(onefile);
}
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename= TEST.zip");
ZipUtils.downloadZip(response.getOutputStream(), fileList);