java 解压 重命名_解压.zip,.tar.gz文件到指定目录,重命名文件

packagecom.hou;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjava.util.zip.GZIPInputStream;importorg.apache.tools.tar.TarEntry;importorg.apache.tools.tar.TarInputStream;/*** 解压tar.gz 文件

* ClassName: Test01

* @Description: TODO

*@authorHJJ

* @date 2018年10月17日*/

public classTest01 {public static voidmain(String[] args) {

File file=new File("D:/home/app/data/tiantai/new/pred_2018-10-15.tar.gz");

String str="D:/home/app/data/tiantai/new/";try{

unTarGz(file,str);

System.out.println("解压成功");

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}//------------------------------------------------------------------------------------------------------

/*** 解压tar.gz 文件

*@paramfile 要解压的tar.gz文件对象

*@paramoutputDir 要解压到某个指定的目录下

*@throwsIOException*/

public static void unTarGz(File file,String outputDir) throwsIOException{

TarInputStream tarIn= null;try{

tarIn= new TarInputStream(newGZIPInputStream(new BufferedInputStream(newFileInputStream(file))),1024 * 2);

createDirectory(outputDir,null);//创建输出目录

TarEntry entry= null;while( (entry = tarIn.getNextEntry()) != null){if(entry.isDirectory()){//是目录

entry.getName();

createDirectory(outputDir,entry.getName());//创建空目录

}else{//是文件

File tmpFile = new File(outputDir + "/" +entry.getName());

createDirectory(tmpFile.getParent()+ "/",null);//创建输出目录

OutputStream out = null;try{

out= newFileOutputStream(tmpFile);int length = 0;byte[] b = new byte[2048];while((length = tarIn.read(b)) != -1){

out.write(b,0, length);

}

}catch(IOException ex){throwex;

}finally{if(out!=null)

out.close();

}

}

}

}catch(IOException ex){throw new IOException("解压归档文件出现异常",ex);

}finally{try{if(tarIn != null){

tarIn.close();

}

}catch(IOException ex){throw new IOException("关闭tarFile出现异常",ex);

}

}

}/*** 构建目录

*@paramoutputDir

*@paramsubDir*/

public static voidcreateDirectory(String outputDir,String subDir){

File file= newFile(outputDir);if(!(subDir == null || subDir.trim().equals(""))){//子目录不为空

file = new File(outputDir + "/" +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、付费专栏及课程。

余额充值