java .z文件解压_【转】JAVA解压.TAR.Z及.ZIP文件

这是一个Java实现的类,用于自动解压.Z格式的文件。通过使用Apache Commons Compress库,代码实现了对.Z文件的解压,并将解压内容保存到指定目录。同时,该类还包含了一个方法用于解压.TAR格式的文件。
摘要由CSDN通过智能技术生成

packageapp.qdupr.Method;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importorg.apache.commons.compress.archivers.tar.TarArchiveEntry;importorg.apache.commons.compress.archivers.tar.TarArchiveInputStream;importorg.apache.commons.compress.compressors.z.ZCompressorInputStream;/*** 自动解压.Z格式的文件

*@authorAdministrator

**/

public classZCompress {/*** 测试方法

*@paramargs*/

public static voidmain(String[] args) {

ZCompress zip= newZCompress();

File dir= new File("E:\\Test");

File[] subs=dir.listFiles();for(File sub : subs) {

String file=sub.getParent()+File.separator+sub.getName();

zip.uncompress(file);

System.out.println(file);

}

}/*** 获取文件夹下全部文件

*@paramfile*/

public static voidfindAllfile(String file) {

ZCompress zip= newZCompress();

File dir= newFile(file);

File[] subs=dir.listFiles();for(File sub : subs) {

String newfile=sub.getParent()+File.separator+sub.getName();

zip.uncompress(newfile);

}

}/*** .Z文件解压

*@paramfile*/

public voiduncompress(String file) {//File file =new File("E:\\BEA20151101.Z");

ZCompress.deCompressTZFile(file);

}/*** 将String型转换为File类型

*@paramfile

*@return

*/

public staticFile deCompressTZFile(String file) {return deCompressZFile(newFile(file));

}/*** 执行解压

*@paramfile

*@return

*/

private staticFile deCompressZFile(File file) {int buffersize = 2048;

FileOutputStream out= null;

ZCompressorInputStream zIn= null;try{

FileInputStream fin= newFileInputStream(file);

BufferedInputStream in= newBufferedInputStream(fin);//解压后的文件存放路径及文件名

String name = file.getName().substring(0, file.getName().indexOf("."));

File outFile= new File("E:\\File\\"+name);

out= newFileOutputStream(outFile);

zIn= newZCompressorInputStream(in);final byte[] buffer = new byte[buffersize];int n = 0;while (-1 != (n =zIn.read(buffer))) {

out.write(buffer,0, n);

}returnoutFile;

}catch(Exception e) {

e.printStackTrace();return null;

}finally{try{

out.close();

zIn.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}/*** .TAR格式文件解压

*@paramfile*/

private static voiddeCompressTARFile(File file) {int buffersize = 2048;

String basePath= file.getParent() +File.separator;

TarArchiveInputStream is= null;try{

is= new TarArchiveInputStream(newFileInputStream(file));while (true) {

TarArchiveEntry entry=is.getNextTarEntry();if (entry == null) {break;

}if (entry.isDirectory()) {//这里貌似不会运行到,跟ZipEntry有点不一样

new File(basePath +entry.getName()).mkdirs();

}else{

FileOutputStream os= null;try{

File f= new File(basePath +entry.getName());if (!f.getParentFile().exists()) {

f.getParentFile().mkdirs();

}if (!f.exists()) {

f.createNewFile();

}

os= newFileOutputStream(f);byte[] bs = new byte[buffersize];int len = -1;while ((len = is.read(bs)) != -1) {

os.write(bs,0, len);

}

os.flush();

}catch(Exception e) {

e.printStackTrace();

}finally{

os.close();

}

}

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{

is.close();

file.delete();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值