栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java压缩多个文件并且返回流示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java压缩多个文件并且返回流示例

这个类可以压缩多个文件并且返回流,在程序中可以再操作返回的流做其它功能,比如验证MD5,下面看代码吧

复制代码 代码如下:

public class TestFileStream{
 //文件和压缩包存储的位置
StringtempFilePath="C:/temp/"
ListfileList=newArrayList();
fileList.add(tempFilePath+"file1.txt");
fileList.add(tempFilePath+"file2.png");
fileList.add(tempFilePath+"file3.xls");
//生成的压缩包名称
StringzipName="fileData";
//返回流
ByteArrayOutputStreamoutputStream=fileToZip(fileList,fileData,tempFilePath);
//页面输入压缩包流
byte[]buffer=outputStream.toByteArray();
//清空response
response.reset();
//设置response的Header
response.addHeader("Content-Disposition",
"attachment;filename="+
newString(("dataFile.zip").getBytes("gb2312"),"ISO8859-1"));
response.addHeader("Content-Length",""+outputStream.size());
toClient=newBufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
}


publicByteArrayOutputStreamfileToZip(ListfileList,StringzipName,StringtempFilePath){
byte[]buffer=newbyte[1024];
ZipOutputStreamout=null;
try{
out=newZipOutputStream(newFileOutputStream(tempFilePath+zipName+".zip"));
Listfiledata=newArrayList();
for(inti=0,len=fileList.size();i{
filedata.add(newFile(fileList.get(i)));
}

for(intj=0,len=filedata.size();j{
FileInputStreamfis=newFileInputStream(filedata.get(j));
out.putNextEntry(newZipEntry(filedata.get(j).getName()));
intdataLen;
//读入需要下载的文件的内容,打包到zip文件
while((dataLen=fis.read(buffer))>0){
out.write(buffer,0,dataLen);

}
out.closeEntry();
fis.close();

}
out.close();
}
catch(Exceptionex)
{
ex.printStackTrace();
}
//读取压缩包
Filefilezip=newFile(tempFilePath+zipName+".zip");

ByteArrayOutputStreambaos=null;
try
{
baos=newByteArrayOutputStream();
FileInputStreaminStream=newFileInputStream(filezip);
BufferedInputStreambis=newBufferedInputStream(inStream);
intc=bis.read();
while(c!=-1){
baos.write(c);
c=bis.read();
}
bis.close();
inStream.close();
}
catch(Exceptionex)
{
ex.printStackTrace();
}
returnbaos;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/152333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号