1.压缩方法
/**
*
* @Title: pack
* @Description: 将一组文件打成tar包
* @param sources 要打包的原文件数组
*@param target 文件地址
* @return File 返回打包后的文件
* @throws
*/
public static void packTar(Listsources, File target) throws Exception {
FileOutputStream out = null;
try {
out = new FileOutputStream(target);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
TarArchiveOutputStream os = new TarArchiveOutputStream(out);
try {
for (File file : sources) {
InputStream inputStream = null;
//file.getName()此处如果不填写文件名,则会按照原路径压缩文件
os.putArchiveEntry(new TarArchiveEntry(file,file.getName()));
inputStream = new FileInputStream(file);
IOUtils.copy(inputStream, os);
os.closeArchiveEntry();
}
} catch (Exception e) {
throw new Exception(e);
}finally {
if(os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.调用方法
public static void main(String[] args){
List versionZip=new ArrayList<>();
versionZip.add(new File(“d:test/file.db”));
versionZip.add(new File(“d:test/file.int”));
String fileZip=“d:/tse/file.zip”;
try {
packTar(versionZip,new File(fileZip));
} catch (Exception e) {
e.printStackTrace();
}
}