ZIP文件压缩

JAVA学习网 2019-08-09 23:22:01

在开发过程中遇到一个小需求,将附件中的文件进行压缩,压缩文件以前没怎么接触过,记录下,直接上代码:

/***
* 将附件中的文件压缩
*
* @param fileMap
压缩前的文件
* @return Map<String,byte[]>
压缩后的文件
*/
private Map<String,byte[]> filesCompressionZIP(Map<String,byte[]> fileMap){
  Map<String,byte[]> map = new HashMap();
  ByteArrayOutputStream bos = new ByteArrayOutputStream();
  ZipOutputStream zip = new ZipOutputStream(bos);
  try{
    ZipEntry entry = null;
    for(Map.Entry<String,byte[]> en: fileMap.entrySet()){
    entry = new ZipEntry(en.getKey());
    entry.setSize(en.getValue().length);
    zip.putNextEntry(entry);
    zip.write(en.getValue());
  }
  }catch(Excepriton e){
    LOGGER.error(e.getMessage(),e);
  }finally{
  try{
    zip.closeEntry();
   }catch(IOExcepriton e){
    LOGGER.error(e.getMessage(),e);
  }
  try{
    zip.close();
  }catch(IOExcepriton e){
    LOGGER.error(e.getMessage(),e);
  }
  try{
    bos.close();
  }catch(IOExcepriton e){
    LOGGER.error(e.getMessage(),e);
  }
  }
  map.put(System.currentTimeMillis()+".zip",bos.toByteArray());
  return map;
}

阅读(2431) 评论(0)