java打包成tar_Java的tar打包和gzip压缩(增加非递归算法)

本文介绍了如何使用Java实现非递归方式的tar打包和gzip压缩。提供了详细的代码示例,包括tar打包函数tarNonRecursion,以及gzip压缩函数gzip。这些函数能够将指定的文件或目录打包并压缩,同时处理了文件名过长的问题。
摘要由CSDN通过智能技术生成

以下tar打包:参考了网上的资料,非真正原创

/**

* tar 打包

* @param source 源文件

* @param dest 目标文件

*/

public static void tar(File source,File dest){

logger.info("开始对源文件["+source.getName()+"]打成tar包");

FileOutputStream out = null;

TarArchiveOutputStream tarOut = null;

try{

out = new FileOutputStream(dest);

tarOut = new TarArchiveOutputStream(out);

//解决文件名过长

tarOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);

tarPack(source, tarOut,"");

tarOut.flush();

tarOut.close();

logger.info("成功把源文件打为tar包,名称为:["+dest.getName()+"]");

}catch (Exception e) {

logger.error(e.getMessage(),e);

}finally{

try{

if(out != null){

out.close();

}

}catch (Exception e) {

logger.error(e.getMessage(),e);

}

try{

if(tarOut != null){

tarOut.close();

}

}catch (Exception e) {

logger.error(e.getMessage(),e);

}

}

}

/**

* 归档

* @param source 源文件或者目录

* @param tarOut 归档流

* @param parentPath 归档后的目录或者文件路径

*/

public static void tarPack(File source,TarArchiveOutputStream tarOut,String parentPath){

if(source.isDirectory()){

tarDir(source,tarOut,parentPath);

}else if(source.isFile()){

tarFile(source,tarOu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值