/*** @功能描述 压缩tar.gz 文件

*@paramresourceList 源文件集合

*@paramoutPath 目标文件

*@return返回压缩结果

*@throwsException*/@PrintRunTime(function="压缩tar.gz文件")public static void packet(List resourceList, String outPath) throwsException {//1. 参数验证, 初始化输出路径

if(resourceList == null || resourceList.size() < 1 || !Verify.isEmpty(outPath)){throw new ServiceException("文件压缩执行异常, 非法参数!");

}long startTime =System.currentTimeMillis();//2. 迭代源文件集合, 将文件打包为Tar

try (FileOutputStream fileOutputStream = new FileOutputStream(outPath+".tmp");

BufferedOutputStream bufferedOutput= newBufferedOutputStream(fileOutputStream);

TarOutputStream tarOutputStream= newTarOutputStream(bufferedOutput);) {for(File resourceFile : resourceList) {if(!resourceFile.isFile()){continue;

}try(FileInputStream fileInputStream = newFileInputStream(resourceFile);

BufferedInputStream bufferedInput= newBufferedInputStream(fileInputStream);){

TarEntry entry= new TarEntry(newFile(resourceFile.getName()));

entry.setSize(resourceFile.length());

tarOutputStream.putNextEntry(entry);

IOUtils.copy(bufferedInput, tarOutputStream);

}catch(Exception e) {throw new ServiceException("文件["+resourceFile+"]压缩执行异常, 嵌套异常: \n" +e.toString());

}finally{

tarOutputStream.closeEntry();

}

}

}catch(Exception e) {

Files.delete(Paths.get(outPath+".tmp"));throw new ServiceException("文件压缩至["+outPath+"]执行异常, 嵌套异常: \n" +e.toString());

}//3. 读取打包好的Tar临时文件文件, 使用GZIP方式压缩

try (FileInputStream fileInputStream = new FileInputStream(outPath+".tmp");

BufferedInputStream bufferedInput= newBufferedInputStream(fileInputStream);

FileOutputStream fileOutputStream= newFileOutputStream(outPath);

GZIPOutputStream gzipOutputStream= newGZIPOutputStream(fileOutputStream);

BufferedOutputStream bufferedOutput= newBufferedOutputStream(gzipOutputStream);

) {byte[] cache = new byte[1024];for (int index = bufferedInput.read(cache); index != -1; index =bufferedInput.read(cache)) {

bufferedOutput.write(cache,0,index);

}long endTime =System.currentTimeMillis();

Log.info("文件["+outPath+"]压缩执行完毕, 耗时:" + (endTime - startTime) + "ms");

}catch(Exception e) {throw new ServiceException("文件压缩至["+outPath+"]执行异常, 嵌套异常: \n" +e.toString());

}finally{

Files.delete(Paths.get(outPath+".tmp"));

}

}

java 压缩 tar_Java将文本文件压缩为tar.gz相关推荐

  1. 压缩,解压文件|*.tar.gz/.tar.bz2 文件

    参考 Tar选项: c – 创建压缩文件 x – 解压文件 v – 显示进度 f – 文件名 t – 查看压缩文件内容 j – 通过bzip2归档 z –通过gzip归档 r – 在压缩文件中追加文件 ...

  2. 2020-10-21 ubuntu 打包解包压缩解压tar gz bz2 tar.Z tgz rar lha格式

    ubuntu 打包解包压缩解压tar gz bz2 tar.Z tgz rar lha格式 一.tar 格式 解包:tar xvf FileName.tar 打包:tar cvf FileName.t ...

  3. tar/gz/bz/gz2/bz2...压缩与解压缩

    *.gz2用gunzip2 *.gz2 For examplegunzip2 *.tar.gz2,解出一个*.tar文件, 然后tar -vxf *.tar即可 .rar格式 解压:[*******] ...

  4. linux 压缩文件夹bz,Linux下tar、bz、gz等压缩包的压缩和解压

    Linux下用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩存储,一般可以节约50-90%的存储空间,本文是对压缩和解压命令的大致总结 .tar.gz 或 .tgz 解压: ...

  5. CentOS 8 安装 JAVA 三种方式(yum / rpm / tar.gz)

    JAVA 8:官方下载 JAVA 11:官方下载 手动安装的两种方式,在安装前统一在usr目录下创建一个JAVA目录 mkdir /usr/java [root@CentOS8 ~]# mkdir / ...

  6. [转] linux下.tar .gz .tgz .bz2 .bz等解、压包命令详解

    tar命令 [原始位置:http://www.51testing.com/?uid-342316-action-viewspace-itemid-232627」 tar 可以为文件和目录创建档案.利用 ...

  7. Linux下创建与解压zip, tar, tar.gz和tar.bz2文件

    在Linux下面去压缩文件或者目录.我们将学习zip, tar, tar.gz和tar.bz2等压缩格式的基本用法. zip格式已成为压缩文件的标准选择,而且它在windows上也能使用. 经常用zi ...

  8. linux中解压.tgz, .tar.gz ,zip ,gz, .tar文件

    将.tgz文件解压在当前目录: tar zxvf MY_NAME.tgz 将.tar.gz文件解压在当前目录: tar zxvf MY_NAME.tar.gz tar -xvf file.tar // ...

  9. tar gz bz bz2 等各种解压文件使用方法

    .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解压 ...

最新文章

  1. 默认子进程与父进程属于同一个进程组,所以注意对接受到的信号的处理方式
  2. 梯度、梯度下降,随机梯度下降
  3. boost::geometry模块测试地理策略Testing geographic strategies的测试程序
  4. 开发中 常用 js 记录(一)
  5. oracle 查询数据库io,理解Oracle中的并行查询IO
  6. 乌班图 之 常用操作命令(二)
  7. c#10:string内插处理
  8. 锐捷交换机实验案例:vlan间互访的配置与验证
  9. matplotlib-27 内嵌环形饼图
  10. FastDFS同ip同机器迁移存储位置
  11. MATLAB GUI中显示数学公式
  12. 产品经理的职责和分类
  13. 今天电脑突然出现问题: 请安装 TCP/IP 协议 错误 10106 【已解决·】
  14. 实在没忍住还是对你出手了-Tom猫源码结构
  15. 正则表达式 re sys os random time 模块
  16. html5如何快速根据psd,微页h5制作工具怎么快速导入PSD源文件?
  17. MATLAB教程二:MATLAB矩阵处理
  18. ADO.NET中五个对象
  19. XTU 1256 湘潭大学
  20. android:layout_gravity=end,android layout_gravity 和gravity

热门文章

  1. mysql实现vpd_MySQL支持类似Oracle的VPD特性吗
  2. Arch 安装中文输入法
  3. VMware的“Intel VT-x is disabled”解决方法
  4. 【渝粤教育】电大中专计算机职业素养 (13)作业 题库
  5. php session.cookie_path,php session和cookie使用说明
  6. linux. 获得cpu利用率 arm,Linux如何统计进程的CPU利用率
  7. Discuz!教程之从码云下载的Discuz!代码安装后个人资料页面乱码问题修复
  8. echarts环形图内实现自定义添加文字数字和缩放自适应
  9. coffee编译coffee到js
  10. Unity3D优化技巧系列七