<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
package tju.SpringBootPostServer;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
import org.apache.commons.compress.utils.IOUtils;
public class TestTargz {
public static byte[] getTargzBytes(List<String> filePathList ) throws IOException {
List<File> fileList=new LinkedList<>();
for(String filePath: filePathList) {
fileList.add(new File(filePath));
}
ByteArrayOutputStream baos=new ByteArrayOutputStream();
TarArchiveOutputStream taos = new TarArchiveOutputStream(baos);
for (File file : fileList) {
InputStream inputStream = null;
try {
taos.putArchiveEntry(new TarArchiveEntry(file,file.getName()));
inputStream = new FileInputStream(file);
IOUtils.copy(inputStream, taos);
taos.closeArchiveEntry();
} catch (Exception e) {
e.printStackTrace();
}
if(inputStream!=null){
inputStream.close();
}
}
if (baos != null) {
try {
baos.flush();
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return baos.toByteArray();
}
public static void main(String[] args) throws IOException {
List<String> fileList=new LinkedList<>();
fileList.add("c:\\data\\test\\exec.json");
fileList.add("c:\\data\\test\\01.txt");
fileList.add("c:\\data\\test\\02.xlsx");
byte[] bytes=getTargzBytes(fileList);
FileOutputStream fos=new FileOutputStream("c:\\data\\test\\0000.tar.gz");
fos.write(bytes);
fos.close();
}
}