程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java緊縮多個文件而且前往流示例

java緊縮多個文件而且前往流示例

編輯:關於JAVA

java緊縮多個文件而且前往流示例。本站提示廣大學習愛好者:(java緊縮多個文件而且前往流示例)文章只能為提供參考,不一定能成為您想要的結果。以下是java緊縮多個文件而且前往流示例正文


這個類可以緊縮多個文件而且前往流,在法式中可以再操作前往的流做其它功效,好比驗證MD5,上面看代碼吧


/**
* 辦法描寫:<b>測試類</b></br>
*/
public class TestFileStream{
 //文件和緊縮包存儲的地位
StringtempFilePath="C:/temp/"
List<String>fileList=newArrayList<String>();
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();
}

/**
*辦法描寫:<b>將多個文件緊縮成zip包</b></br>
*/
publicByteArrayOutputStreamfileToZip(List<String>fileList,StringzipName,StringtempFilePath){
byte[]buffer=newbyte[1024];
ZipOutputStreamout=null;
try{
out=newZipOutputStream(newFileOutputStream(tempFilePath+zipName+".zip"));
List<File>filedata=newArrayList<File>();
for(inti=0,len=fileList.size();i<len;i++)
{
filedata.add(newFile(fileList.get(i)));
}

for(intj=0,len=filedata.size();j<len;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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved