java解压bz2_java代码解压tar.bz2包

packagecom.lxd.IO;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importorg.apache.commons.compress.archivers.tar.TarArchiveEntry;importorg.apache.commons.compress.archivers.tar.TarArchiveInputStream;importorg.apache.commons.compress.archivers.tar.TarArchiveOutputStream;importorg.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;importorg.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;public classDemo {public static void main(String[] args) throwsException {//TODO Auto-generated method stub

decompressTarBz2(new File("E:\\lxd\\lxd_LXD_001.tar.bz2"), "E:\\lxd\\nb");

}public static void decompressTarBz2(File file, String outputDir) throwsIOException {try (TarArchiveInputStream tarIn =

newTarArchiveInputStream(newBZip2CompressorInputStream(newFileInputStream(file)))) {

createDirectory(outputDir,null);

TarArchiveEntry entry;while ((entry = tarIn.getNextTarEntry()) != null) {if(entry.isDirectory()) {

createDirectory(outputDir, entry.getName());

}else{try (OutputStream out = newFileOutputStream(new File(outputDir + File.separator +entry.getName()))) {

writeFile(tarIn, out);

}

}

}

}

}/*** 写文件

*

*@paramin

*@paramout

*@throwsIOException*/

public static void writeFile(InputStream in, OutputStream out) throwsIOException {intlength;byte[] b = new byte[1024*100];while ((length = in.read(b)) != -1) {

out.write(b,0, length);

}

}/*** 创建目录

*

*@paramoutputDir

*@paramsubDir*/

public static voidcreateDirectory(String outputDir, String subDir) {

File file= newFile(outputDir);//子目录不为空

if (!(subDir == null || subDir.trim().equals(""))) {

file= new File(outputDir + File.separator +subDir);

}if (!file.exists()) {if (!file.getParentFile().exists()) {

file.getParentFile().mkdirs();

}

file.mkdirs();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值