/** * 获取Zip实体对象 * @param taskId * @param zipName * @return */ @Override public List<ZipAllEntity> getZip(String taskId, String zipName) { TbsFileDTO tbsFileDTO = new TbsFileDTO(); tbsFileDTO.setTaskId(taskId); //这里我们去数据库查询要被压缩的文件 List<TbsFileDTO> list=------------ ArrayList<ZipAllEntity> ziplist=new ArrayList<ZipAllEntity>(); for (TbsFileDTO tbs:list ) { File file=new File(FtpClientUtil.getPath() + "/"+ tbs.getFileUrl()) ; ZipAllEntity entity=new ZipAllEntity(); entity.setZipName(StringUtil.isEmpty(zipName)?tbs.getStrExt01():zipName); entity.setFile(file); entity.setEntity(file); ziplist.add(entity); } return ziplist; } /** * 压缩包写入 * @param list 封装好的集合 * @param out 要写入哪个流 写本地文件就穿本地流 传web端就写 */ public static void write(List<ZipAllEntity> list , OutputStream out){ FileInputStream fis = null; BufferedInputStream bis = null; java.util.zip.ZipOutputStream zos = new java.util.zip.ZipOutputStream(new BufferedOutputStream(out)); try { byte[] bufs = new byte[1024 * 10]; for (ZipAllEntity all:list ) { zos.putNextEntry(all.getEntity()); fis = new FileInputStream(all.getFile()); bis = new BufferedInputStream(fis, 1024 * 10); int read = 0; while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) { zos.write(bufs, 0, read); } } zos.flush(); }catch (Exception e){ logger.error(e.getMessage()); }finally { try { if (null != bis) { bis.close(); } if (null != zos) { zos.close(); } if (null != fis) { fis.close(); } if (null != out) { out.close(); } }catch (Exception e){ } }