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读取内容的更多相关文章

  1. Linux 下面解压.tar.gz 和.gz文件解压的方式

    Linux 下面解压.tar.gz 和.gz文件解压的方式 两种解压方式 1 .tar.gz 使用tar命令进行解压 tar -zxvf java.tar.gz 解压到指定的文件夹 tar -zxvf ...

  2. 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. ...

  3. Linux压缩解压 tar.gz格式的文件.查看tomcat是否运行

    tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...

  4. 解压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] ...

  5. centos下解压rar文件,Linux解压tar.gz和tar.bz2的命令

    1.下载:根据主机系统下载合适的版本,当前64为centos系统演示下载: wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz 2.解压安 ...

  6. centos6.5安装jdk(解压tar.gz)

    0.说明 下载jdk文件包jdk-7u79-linux-x64.tar.gz. 1.环境清理(系统自带的OpenJDK) 1.1 查看OpenJDK的安装包 $ rpm -qa |grep java ...

  7. centos 6.5 解压 tar.gz

    只查看 tar.gz 文件内容而不解压 tar -tvf filename.tar.gz 解压为 tar 文件 gzip -d filename.tar.gz 解压为文件或目录 tar xvf fil ...

  8. 解压.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: ...

  9. [Linux] 解压tar.gz文件,解压部分文件

    遇到数据库无法查找问题原因,只能找日志,查找日志的时候发现老的日志都被压缩了,只能尝试解压了   数据量比较大,只能在生产解压了,再进行查找 文件名为*.tar.gz,自己博客以前记录过解压方法: h ...

随机推荐

  1. Centos 安装 neo4j

    This is experimental and not considered safe for production. You have been warned. Please note that ...

  2. ArcGIS学习推荐

    1.  Arcgis Desktop 10帮助库 ArcGIS 系统的帮助库.该帮助库已经过编译,可为 ArcGIS 各方面的应用提供综合文档.建立该库的目的是满足以下各类主要用户的需求: GIS 专 ...

  3. Linux下安装国际版QQ (转)

    原文链接:http://www.linuxidc.com/Linux/2016-09/134923.htm 说明:一开始,我在Ubuntu 16.04下安装的QQ版本是Wineqq2013SP6-20 ...

  4. linux性能测试命令-----top

    Top命令显示了实际CPU使用情况,默认情况下,它显示了服务器上占用CPU的任务信息,并且每5秒钟刷新一次.它会显示CPU使用量.内存使用量.交换内存.缓存大小.缓冲区大小.流程PID.用户.命令等. ...

  5. 读<jquery 权威指南>[2]-事件

    1.  事件冒泡 阻止事件冒泡的两种方式: event.stopPropagation(); return false ; 2. 绑定事件——bind(type,[data],function) ty ...

  6. sphinx索引文件进一步说明——最好是结合lucene一起看,直觉告诉我二者本质无异

    摘自:http://blog.csdn.net/cangyingzhijia/article/details/8592441 Sphinx使用的文件包括 "sph", " ...

  7. SQL Server中开发常用的数据类型

    我们在日常开发过程中,在进行数据库设计的时候,经常会遇到如果选择数据类型的问题,选择什么样的数据类型最合适,然后当我们在项目中建立对应实体的时候,如何选择对应的CLR类型.针对这些问题,于是这篇文章诞 ...

  8. OC方法和文件编译

    OC方法和文件编译 一.OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变量 (4)调用格式   [对象 ...

  9. iOS开发拓展篇—UIDynamic(简单介绍)

    iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟 ...

  10. UOJ Test Round 1

    第一题: 题目大意: 给出N个字符串,字符串的前面部分都是字母且都是一样的,后面部分是数字,按照后面的数字排序.N<=10000 解题过程: 1.第一题是真良心,一开始的做法是把后面的数字分离出 ...