与文件提供下载服务的不同在于压缩包使用的流应该调整为ZipOutputStream
关键代码如下
zipOutputStream.putNextEntry(new ZipEntry(crmTrace + ".txt")); //指定压缩目录
fileInputStream = new FileInputStream(file); //指定要被压缩的文件
byte[] buf = new byte[1024];
int len = 0;
while ((len = fileInputStream.read(buf)) > 0) { //读取1024长度文件,读取了多少长度,len就是多少
zipOutputStream.write(buf, 0, len); //三个参数,第一个是数据,第二个是发送数据的起始位置,固定是0,第三个是发送的终点位置
}
//压缩是从字节层面展开,因此保证字节完整即可确保压缩包不损坏