Java实现将多个文件打包压缩成tar_gz文件

Posted on

Java实现将多个文件打包压缩成tar_gz文件 - 易锐的日志 - 网易博客

网易

新闻微博邮箱相册阅读有道摄影爱拍闪电邮手机邮印像派梦幻人生 更多

博客

手机博客博客搬家博客VIP服务 LiveWriter写博word写博邮件写博短信写博 群博客博客油菜地博客话题博客热点博客圈子找朋友 发现

小组 风格

博客VIP服务

创建博客 登录

关注

重要提醒:系统检测到您的帐号可能存在被盗风险,请尽快查看风险提示,并立即修改密码。 | 关闭

网易博客安全提醒:系统检测到您当前密码的安全性较低,为了您的账号安全,建议您适时修改密码 立即修改 | 关闭 显示下一条 | 关闭

易锐的博客

我的博客

导航

日志

eclipse注释规范设置

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) |举报

eclipse注释规范设置

历史上的今天

相关文章

最近读者

评论

this.p={ m:2, b:2, id:'fks_083066081080089069080083087095092087087070085087094070', blogTitle:'Java实现将多个文件打包压缩成tar.gz文件', blogAbstract:'后缀为tar.gz的文件实际上时先将文件(单个或多个)打包成后缀为tar的(tar包)文件,再用gzip压缩成gz文件,如此来说我们便可以用两步来实现此功能,请看代码:\r\nimport java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.GZIPOutputStream;\r\nimport org.apache.commons.compress.archivers.tar.TarArchiveEntry;', blogTag:'', blogUrl:'blog/static/8165118520091063306587', isPublished:1, istop:false, type:0, modifyTime:0, publishTime:1257492606587, permalink:'blog/static/8165118520091063306587', commentCount:0, mainCommentCount:0, recommendCount:0, bsrk:-100, publisherId:0, recomBlogHome:false, attachmentsFileIds:[], vote:{}, groupInfo:{}, friendstatus:'none', followstatus:'unFollow', pubSucc:'', visitorProvince:'广东', visitorCity:'深圳', postAddInfo:{}, mset:'000', mcon:'', srk:-100, remindgoodnightblog:false, isBlackVisitor:false, isShowYodaoAd:false, hostIntro:'', hmcon:'' } {list a as x} {if !!x}

{if x.visitorName==visitor.userName} ${x.visitorNickname|escape} {else} ${x.visitorNickname|escape} {/if}
{if x.moveFrom=='wap'} {elseif x.moveFrom=='iphone'} {elseif x.moveFrom=='android'} {elseif x.moveFrom=='mobile'} {/if} ${fn(x.visitorNickname,8)|escape}
{/if} {/list} {if !!a} ${fn(a.nickname,8)|escape}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{/if} </#--最新日志,群博日志--> {list a as x} {if !!x}
  • ${fn(x.title,26)|escape}
  • {/if} {/list} </#--推荐日志-->

    推荐过这篇日志的人:

    {list a as x} {if !!x} {/if} {/list}
    {if !!b&&b.length>0}

    他们还推荐了:

    {/if} </#--引用记录--> 引用记录: </#--博主推荐--> {list a as x} {if !!x}
  • ${x.title|default:""|escape}
  • {/if} {/list} </#--随机阅读--> {list a as x} {if !!x}
  • ${x.title|default:""|escape}
  • {/if} {/list} </#--首页推荐--> {list a as x} {if !!x}
  • ${x.blogTile|default:""|escape}
  • {/if} {/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}
    </#--右边模块结构-->

    最新日志

      该作者的其他文章

        博主推荐

          相关日志

            随机阅读

              首页推荐


                对“推广广告”提建议

                </#--评论模块结构-->
                </#--引用模块结构-->
                </#--博主发起的投票--> {list a as x} {if !!x}
              • ${x.nickName|escape} 投票给 {var first_option = true;} {list x.voteDetailList as voteToOption} {if voteToOption==1} {if first_option==false},{/if} “${b[voteToOption_index]}” {/if} {/list} {if (x.role!="-1") },“我是${c[x.role]}” {/if} ${fn1(x.voteTime)} {if x.userName==''}{/if} {/if} {/list}

                页脚

                公司简介 - 联系方法 - 招聘信息 - 客户服务 - 隐私政策 - 博客风格 - 手机博客 - VIP博客 - 订阅此博客

                网易公司版权所有 ©1997-2011

                帮助 ${u} {list wl as x}

                ${x.g}
                {list x.l as y} ${y.n} {/list} {/list} {if defined('wl')} {list wl as x}${x.n}{/list} {/if}

              • 希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
                转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途