根据地址集合生成zip文件工具类
public class FileUtil {
/**
* 根据地址集合生成zip文件
*
* @param urlList
* @return
*/
public static File zipDownLoad(List<String> urlList) {
try {
// 创建临时文件
File zipFile = File.createTempFile("package", ".zip");
FileOutputStream f = new FileOutputStream(zipFile);
/**
* 作用是为任何OutputStream产生校验和
* 第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种)
*/
CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
// 用于将数据压缩成Zip文件格式
ZipOutputStream zos = new ZipOutputStream(csum);
//处理正面
for (int i = 0; i < urlList.size(); i++) {
// 读去Object内容 返回
URL url = new URL(urlList.get(i));
URLConnection uc = url.openConnection();
InputStream raw = uc.getInputStream();
InputStream inputStream = new BufferedInputStream(raw);
String[] img = urlList.get(i).split("/");
String fileName = img[img.length - 1];
zos.putNextEntry(new ZipEntry(fileName));
int bytesRead = 0;
//输入缓冲流
BufferedInputStream bufferStream = new BufferedInputStream(inputStream, 1024 * 10);// 向压缩文件中输出数据
//创建读写缓冲区
byte[] buf = new byte[inputStream.available()];
while ((bytesRead = bufferStream.read(buf, 0, buf.length)) != -1) {
zos.write(buf, 0, bytesRead);
}
bufferStream.close();
inputStream.close();
zos.closeEntry(); // 当前文件写完,定位为写入下一条项目
}
//关闭流
zos.close();
return zipFile;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}


784

被折叠的 条评论
为什么被折叠?



