Java OSS批量下载并压缩为ZIP代码实例
这篇文章主要介绍了JavaOSS批量下载并压缩为ZIP代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
/** *批量下载为zip *@paramreq *@paramresponse *@paramkeyListoss文件路径集合 *@paramfileName下载出来的zip文件名(一般以合同名命名)如:测试合同,zip */ publicstaticvoiddownForZip(HttpServletRequestreq,HttpServletResponseresponse, ListkeyList,StringfileName){ //创建临时文件 FilezipFile=null; try{ //临时文件名称 zipFile=File.createTempFile("test",".zip"); FileOutputStreamf=newFileOutputStream(zipFile); /** *作用是为任何OutputStream产生校验和 *第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型(Adler32(较快)和CRC32两种) */ CheckedOutputStreamcsum=newCheckedOutputStream(f,newAdler32()); //用于将数据压缩成Zip文件格式 ZipOutputStreamzos=newZipOutputStream(csum); OSSClientossClient=OSSUtil.getInstance(); for(StringossFile:keyList){ //获取Object,返回结果为OSSObject对象 OSSObjectossObject=ossClient.getObject(OSSUtil.BUCKET,ossFile); //读去Object内容返回 InputStreaminputStream=ossObject.getObjectContent(); //对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法,确保压缩包里面文件不同名 Stringname=ossFile.substring(ossFile.lastIndexOf("/")+1); zos.putNextEntry(newZipEntry(name)); intbytesRead=0; //向压缩文件中输出数据 while((bytesRead=inputStream.read())!=-1){ zos.write(bytesRead); } inputStream.close(); zos.closeEntry();//当前文件写完,定位为写入下一条项目 } zos.close(); Stringheader=req.getHeader("User-Agent").toUpperCase(); if(header.contains("MSIE")||header.contains("TRIDENT")||header.contains("EDGE")){ fileName=URLEncoder.encode(fileName,"utf-8"); //IE下载文件名空格变+号问题 fileName=fileName.replace("+","%20"); }else{ fileName=newString(fileName.getBytes(),"ISO8859-1"); } response.reset(); response.setContentType("text/plain"); response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Location",fileName); response.setHeader("Cache-Control","max-age=0"); response.setHeader("Content-Disposition","attachment;filename="+fileName); FileInputStreamfis=newFileInputStream(zipFile); BufferedInputStreambuff=newBufferedInputStream(fis); BufferedOutputStreamout=newBufferedOutputStream(response.getOutputStream()); byte[]car=newbyte[1024]; intl=0; while(l 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。