【java】 java 解压tar.gz读取内容
package com.xwolf.stat.util; import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import java.io.*;
import java.util.List;
import java.util.Map;
import java.util.zip.GZIPInputStream; /**
* tar.gz解压
* @author xwolf
* @date 2016-11-07 15:06
* @since V1.0.0
*/
@Slf4j
public class TarUtil { public static final String ENCODING="GBK";
/**
* 解压缩tar
* @param file
*/
public static String unTarFile(String file) {
List<Map<String,Object>> lists= Lists.newArrayList();
try (FileInputStream fis = new FileInputStream(new File(file));
GZIPInputStream is = new GZIPInputStream(new BufferedInputStream(
fis));
ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream("tar", is);
InputStreamReader inr = new InputStreamReader(
is,ENCODING);//考虑到编码格式
BufferedReader reader=new BufferedReader(inr)
){
TarArchiveEntry entry = (TarArchiveEntry) in.getNextEntry();
String lineTxt=null;
while (entry != null) {
String name = entry.getName();
String[] nameSplit=name.split("_");
String sn=nameSplit[1];
log.info("name:{},sn:{}",name,sn);
while((lineTxt = reader.readLine()) != null){
String[] keys= lineTxt.split("\t");
Map<String,Object> map = Maps.newHashMap();
map.put("sn",sn);
for(String key:keys){
String[] values =key.split("=");
if(!StringUtils.isEmpty(values[0])){
map.put(values[0],values[1]);
}
}
lists.add(map);
}
entry = (TarArchiveEntry) in.getNextEntry();
}
return JSON.toJSONString(lists);
} catch (Exception e) {
log.error(e.getMessage(),e);
return "";
}
}
}
具体的内容读取可忽略,加上了自己的业务需要。
需要的解压缩依赖

【java】 java 解压tar.gz读取内容的更多相关文章
- Linux 下面解压.tar.gz 和.gz文件解压的方式
Linux 下面解压.tar.gz 和.gz文件解压的方式 两种解压方式 1 .tar.gz 使用tar命令进行解压 tar -zxvf java.tar.gz 解压到指定的文件夹 tar -zxvf ...
- tar -zxvf file.tar.gz //解压tar.gz
http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0. ...
- Linux压缩解压 tar.gz格式的文件.查看tomcat是否运行
tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...
- 解压tar.gz文件报错gzip: stdin: not in gzip format解决方法
解压tar.gz文件报错gzip: stdin: not in gzip format解决方法 在解压tar.gz文件的时候报错 1 2 3 4 5 [Sun@localhost Downloads] ...
- centos下解压rar文件,Linux解压tar.gz和tar.bz2的命令
1.下载:根据主机系统下载合适的版本,当前64为centos系统演示下载: wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz 2.解压安 ...
- centos6.5安装jdk(解压tar.gz)
0.说明 下载jdk文件包jdk-7u79-linux-x64.tar.gz. 1.环境清理(系统自带的OpenJDK) 1.1 查看OpenJDK的安装包 $ rpm -qa |grep java ...
- centos 6.5 解压 tar.gz
只查看 tar.gz 文件内容而不解压 tar -tvf filename.tar.gz 解压为 tar 文件 gzip -d filename.tar.gz 解压为文件或目录 tar xvf fil ...
- 解压.tar.gz出错gzip: stdin: not in gzip format tar: /Child returned status 1 tar: Error is not recoverable: exiting now
先查看文件真正的属性是什么? [root@xxxxx ~]# tar -zxvf tcl8.4.16-src.tar.gz gzip: stdin: not in gzip format tar: ...
- [Linux] 解压tar.gz文件,解压部分文件
遇到数据库无法查找问题原因,只能找日志,查找日志的时候发现老的日志都被压缩了,只能尝试解压了 数据量比较大,只能在生产解压了,再进行查找 文件名为*.tar.gz,自己博客以前记录过解压方法: h ...
随机推荐
- 浅谈Bootstrap——导航条起步
不多说,直接上代码. <div class="navbar navbar-default"> <div class="container"&g ...
- location.hash的摘抄
location.hash详解 去年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/us ...
- shell的if判断
shell的if判断 2012-03-16 14:53:05 分类: Python/Ruby 1 概要 有时候你需要指定shell脚本中的依靠命令的成功与否来实施不同过程的行为. if 结构允许 ...
- 关于extra加强延迟加载
一对多和多对多关联的查询策略 lazy属性的另一个属性extra 加强延迟加载 表明采用增强延迟加载策略:在<set>元素配置lazy属性为"extra".增强延迟加载 ...
- malloc函数详解
一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...
- ios资源
ios 资源 分类: ios开发2012-05-30 16:39 573人阅读 评论(0) 收藏 举报 ios文档calendar2010reference图像处理 学习过程当中查找到的资料,做一个记 ...
- 服务器端与客户端TCP连接入门(二)
1.服务器端程序 package Socket; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...
- 一口气学会Linq
千万别被这个页面的滚动条吓到!!! 我相信你一定能在30分钟之内看完它!!! 在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之 ...
- 计算机网络(6)-----运输层概述和UDP协议
运输层(Transport Layer) 定义 运输层负责端到端的通信,既是七层模型中负责数据通信的最高层,又是面向网络通信的低三层和面向信息处理的最高三层之间的中间层.运输层位于网络层之上.会话层之 ...
- python mysql 更新和插入数据无效
注意,在删除和增加后必须执行conn.commit()才有效,否则操作无效.