在对服务器没有磁盘读写的情况下需要用到ZipOutputStream
import java.io.*;
import java.net.URL;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZiposTest {
public static void main(String[] args) throws IOException {
//文件为输出位置
FileOutputStream fos = new FileOutputStream("D:\\test.zip");
/**
* 网络输出流 下载时用到
* */
/* OutputStream outputStream = response.getOutputstream;
ZipOutputStream zos = new ZipOutputStream(outputStream);*/
ZipOutputStream zos = new ZipOutputStream(fos);
//写入一个条目,我们需要给这个条目起个名字,相当于起一个文件名称
zos.putNextEntry(new ZipEntry("1.txt"));
//往这个条目中写入一定的数据
zos.write("这是压缩包内txt的内容".getBytes());
//关闭该条目
zos.closeEntry();
/**
* 从网络获取一个图片*/
//写入一个条目,条目名
zos.putNextEntry(new ZipEntry("2.jpg"));
URL url = new URL("https://r.photo.store.qq.com/psc?/V50tSSWT3GtMHB1dUL9E1DCHb84RV3zp/45NBuzDIW489QBoVep5mcfsCuk0RjQYa9TE2dMrv*qD2cJ4eXZdbc0PKyUatJa75DM1tX9*j0JYRzBpcr5j.7B2YRX*nBzkdtEopa6BpITA!/r?key=582349");
//网络输入流
InputStream ins = url.openStream();
//多态 文件输入流转buffer 输入流
ins = new BufferedInputStream(ins);
//10k 字节数组
byte[] insbyte = new byte[1024 * 100];
//长度就是每次 出流中取出的长度并存放到 字节数组的长度
int len;
// 有内容
while ((len = ins.read(insbyte)) != -1) {
zos.write(insbyte);
}
//关闭该条目
zos.closeEntry();
//关输入流
ins.close();
// 关闭流
zos.close();
}
}