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();
}
}
}