利用java.util.zip可以将多个文件压缩,文件是本地文件或网络文件,下面代码以网络图片为例,如果是本地文件,可稍作修改。
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Test2 {
public static void main(String[] args) {
Set<String> urlList = new HashSet<>();
urlList.add("https://images2015.cnblogs.com/blog/939998/201605/939998-20160517212000341-1761362961.png");
urlList.add("https://images2015.cnblogs.com/blog/939998/201605/939998-20160517211944357-1810109113.png");
File zipFile = null;
ZipOutputStream out = null;
try {
zipFile = new File("test.zip");
out = new ZipOutputStream(new FileOutputStream(zipFile));
for (String url : urlList) {
String entryName = url.substring(url.lastIndexOf("/"));
ZipEntry entry = new ZipEntry(entryName);
out.putNextEntry(entry);
URL path = new URL(url);
DataInputStream dis = new DataInputStream(path.openStream());
int len = 0;
byte[] buffer = new byte[1024];
while ((len = dis.read(buffer)) > 0) {
out.write(buffer, 0, len);
out.flush();
}
dis.close();
}
out.closeEntry();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
执行之后,压缩会生成在项目的根目录下:
解压查看文件: