Java实现将多个文件打包压缩成tar_gz文件
Posted onJava实现将多个文件打包压缩成tar_gz文件 - 易锐的日志 - 网易博客
新闻微博邮箱相册阅读有道摄影爱拍闪电邮手机邮印像派梦幻人生 更多
手机博客博客搬家博客VIP服务 LiveWriter写博word写博邮件写博短信写博 群博客博客油菜地博客话题博客热点博客圈子找朋友 发现
关注
重要提醒:系统检测到您的帐号可能存在被盗风险,请尽快查看风险提示,并立即修改密码。 | 关闭
网易博客安全提醒:系统检测到您当前密码的安全性较低,为了您的账号安全,建议您适时修改密码 立即修改 | 关闭 显示下一条 | 关闭
易锐的博客
导航
日志
Java实现将多个文件打包压缩成tar.gz文件
2009-11-06 15:30:06| 分类: 默认分类 | 标签: |字号大中小 订阅
后缀为tar.gz的文件实际上时先将文件(单个或多个)打包成后缀为tar的(tar包)文件,再用gzip压缩成gz文件,如此来说我们便可以用两步来实现此功能,请看代码:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.GZIPOutputStream;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; import org.apache.commons.compress.utils.IOUtils;
/// / @Title: GZIPUtil.java / @Description: gzip文件压缩和解压缩工具类 / @author LM / @date 2009-11-4 下午06:23:29 / @version V1.0 // public class GZIPUtil {
/// / / @Title: pack / @Description: 将一组文件打成tar包 / @param sources 要打包的原文件数组 / @param target 打包后的文件 / @return File 返回打包后的文件 / @throws // public static File pack(File[] sources, File target){ FileOutputStream out = null; try { out = new FileOutputStream(target); } catch (FileNotFoundException e1) { e1.printStackTrace(); } TarArchiveOutputStream os = new TarArchiveOutputStream(out); for (File file : sources) { try { os.putArchiveEntry(new TarArchiveEntry(file)); IOUtils.copy(new FileInputStream(file), os); os.closeArchiveEntry();
} catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } if(os != null) { try { os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } }
return target; }
/// / / @Title: compress / @Description: 将文件用gzip压缩 / @param source 需要压缩的文件 / @return File 返回压缩后的文件 / @throws /*/ public static File compress(File source) { File target = new File(source.getName() + ".gz"); FileInputStream in = null; GZIPOutputStream out = null; try { in = new FileInputStream(source); out = new GZIPOutputStream(new FileOutputStream(target)); byte[] array = new byte[1024]; int number = -1; while((number = in.read(array, 0, array.length)) != -1) { out.write(array, 0, number); } } catch (FileNotFoundException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } finally { if(in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); return null; } }
if(out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); return null; } } } return target; }
public static void main(String[] args) { File[] sources = new File[] {new File("task.xml"), new File("app.properties")}; File target = new File("release_package.tar"); compress(pack(sources, target)); } }
可以打包压缩,那么解压缩就是反其道而行,有时间再来写一篇解压缩的。 评论这张
转发至微博 转发至微博
0人 | 分享到:
阅读(674)| 评论(0)| 引用 (0) |举报
历史上的今天
相关文章
最近读者
评论
this.p={ m:2, b:2, id:'fks_083066081080089069080083087095092087087070085087094070', blogTitle:'Java实现将多个文件打包压缩成tar.gz文件', blogAbstract:'
后缀为tar.gz的文件实际上时先将文件(单个或多个)打包成后缀为tar的(tar包)文件,再用gzip压缩成gz文件,如此来说我们便可以用两步来实现此功能,请看代码:
\r\nimp
imp
imp
imp
imp
imp
imp
推荐过这篇日志的人:
他们还推荐了:
- {list b as y} {if !!y}
- ·${y.recommendBlogTitle} {/if} {/list}
- {list d as x}
- · {/list}
- {list a as x} {if x_index>9}{break}{/if} {if !!x}
- ${x.title|default:""|escape}${fn2(parseInt(x.date),'yyyy-MM-dd HH:mm:ss')} {/if} {/list}
- {list a as x} {if x_index>4}{break}{/if} {if !!x}
- ${fn1(x.title,60)|escape}${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')} {/if} {/list}
最新日志
该作者的其他文章
博主推荐
相关日志
随机阅读
首页推荐
对“推广广告”提建议
</#--评论模块结构-->
页脚
公司简介 - 联系方法 - 招聘信息 - 客户服务 - 隐私政策 - 博客风格 - 手机博客 - VIP博客 - 订阅此博客
网易公司版权所有 ©1997-2011