ZIP文件压缩
在开发过程中遇到一个小需求,将附件中的文件进行压缩,压缩文件以前没怎么接触过,记录下,直接上代码:
/***
* 将附件中的文件压缩
*
* @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;
}