java解压tar_【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> 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 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 "";

}

}

}

具体的内容读取可忽略,加上了自己的业务需要。

需要的解压缩依赖

4452530dc8bd1e971f5b71342090ba44.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值