url为网络链接
public class File2ZipUtil {
public static void file2zip(JSONObject urls,String path) throws Exception {
byte[] buffer = new byte[1024];
// 生成的ZIP文件存放地址
String strZipName = path;
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipName));
// 网络请求所需变量
InputStream reader = null;
URL url = null;
Iterator<String> it = urls.keys();
while(it.hasNext()){
// 获得key
String fileName = it.next();
String path = urls.getString(fileName);
url = new URL(path);
out.putNextEntry(new ZipEntry(fileName+path.substring(path.lastIndexOf("."))));
// 根据Url打开地址,以utf-8编码的形式返回输入流
reader = url.openStream();
int len;
// 读入需要下载的文件的内容,打包到zip文件
while ((len = reader.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
}
out.closeEntry();
reader.close();
out.close();
System.out.println("生成Demo.zip成功");
}
//这个方法可以用在本地链接
// public static void main(String[] args) throws Exception {
// byte[] buffer = new byte[1024];
// // 生成的ZIP文件名为Demo.zip
// String strZipName = "e:/Demo.zip";
// ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipName));
// // 需要同时下载的两个文件result.txt ,source.txt
// File[] file1 = { new File("http://images.test.zhiziyun.com/creative/0zoTLi29XRgq_F8W6B0g2gve.jpg"),
// new File("http://images.test.zhiziyun.com/creative/0zoTLi29XRgq_F8Vkd03bH0Y.jpg") };
// for (int i = 0; i < file1.length; i++) {
// FileInputStream fis = new FileInputStream(file1[i]);
// out.putNextEntry(new ZipEntry(file1[i].getName()));
// int len;
// // 读入需要下载的文件的内容,打包到zip文件
// while ((len = fis.read(buffer)) > 0) {
// out.write(buffer, 0, len);
// out.putNextEntry(new ZipEntry(file1[i].getName()));
// }
// out.closeEntry();
// fis.close();
// }
// out.close();
// System.out.println("生成Demo.zip成功");
// }
}
public class test {
@Test
public void test2() throws Exception {
JSONObject urls = new JSONObject();
urls.put("文件1", "http://images/....../1.jpg");
urls.put("文件2", "http://images/....../2.jpg");
String path = "e:/Demo.zip";
File2ZipUtil.file2zip(qualifications, path);
}
}