package com.dashuf.common.utils.file;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
import org.apache.commons.io.IOUtils;
import java.io.*;
import java.util.List;
/**
* 文件打包工具类
*
*/
public class FilePackUtils {
/**
* 打包tar压缩文件
*
* @param sources 文件源
* @param target 返回压缩的文件
* @return
*/
public static File pack(File[] sources, File target) {
FileOutputStream out = null;
try {
out = new FileOutputStream(target);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
TarArchiveOutputStream os = new TarArchiveOutputStream(out);
for (File file : sources) {
try {
TarArchiveEntry tarArchiveEntry = new TarArchiveEntry(file);
tarArchiveEntry.setName(file.getName());
os.putArchiveEntry(tarArchiveEntry);
IOUtils.copy(new FileInputStream(file), os);
os.closeArchiveEntry();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return target;
}
/**
* 打包tar压缩文件
*
* @param filePaths 文件源路径
* @param target 返回压缩的文件
* @return
*/
public static File pack(List<String> filePaths, File target) {
FileOutputStream out = null;
try {
out = new FileOutputStream(target);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
TarArchiveOutputStream os = new TarArchiveOutputStream(out);
for (int i = 0; i < filePaths.size(); i++) {
File file = new File(filePaths.get(i));
try {
TarArchiveEntry tarArchiveEntry = new TarArchiveEntry(file);
tarArchiveEntry.setName(file.getName());
os.putArchiveEntry(tarArchiveEntry);
IOUtils.copy(new FileInputStream(file), os);
os.closeArchiveEntry();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return target;
}
}