以下tar打包:参考了网上的资料,非真正原创
/**
* tar 打包
* @param source 源文件
* @param dest 目标文件
*/
public static void tar(File source,File dest){
logger.info("开始对源文件["+source.getName()+"]打成tar包");
FileOutputStream out = null;
TarArchiveOutputStream tarOut = null;
try{
out = new FileOutputStream(dest);
tarOut = new TarArchiveOutputStream(out);
//解决文件名过长
tarOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
tarPack(source, tarOut,"");
tarOut.flush();
tarOut.close();
logger.info("成功把源文件打为tar包,名称为:["+dest.getName()+"]");
}catch (Exception e) {
logger.error(e.getMessage(),e);
}finally{
try{
if(out != null){
out.close();
}
}catch (Exception e) {
logger.error(e.getMessage(),e);
}
try{
if(tarOut != null){
tarOut.close();
}
}catch (Exception e) {
logger.error(e.getMessage(),e);
}
}
}
/**
* 归档
* @param source 源文件或者目录
* @param tarOut 归档流
* @param parentPath 归档后的目录或者文件路径
*/
public static void tarPack(File source,TarArchiveOutputStream tarOut,String parentPath){
if(source.isDirectory()){
tarDir(source,tarOut,parentPath);
}else if(source.isFile()){
tarFile(source,tarOu