public static void main(String[] args) {
String path=BaseDao.archive("c/txt.text");
}
/**
* 执行压缩为.tar.gz文件路径
* @param entry
* @throws IOException
* @author yutao
* @return
*/
public String archive(String entry) throws IOException {
File file = new File(entry);
//取出文件所在的文件夹 new FileOutputStream(file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf('.')) + ".tar"
TarArchiveOutputStream tos = new TarArchiveOutputStream(new FileOutputStream(file.getAbsolutePath().substring
(0, file.getAbsolutePath().lastIndexOf('.')) + ".tar"));
String base = file.getName();
if(file.isDirectory()){
archiveDir(file, tos, base);
}else{
archiveHandle(tos, file, base);
}
tos.close();
//------------------------------------拼接压缩为.tar.gz文件
String path=file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf('.')) + ".dat";
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
GzipCompressorOutputStream gcos = new GzipCompressorOutputStream(new BufferedOutputStream(new FileOutputStream(path + ".gz")));
byte[] buffer = new byte[1024];
int read = -1;
while((read = bis.read(buffer)) != -1){
gcos.write(buffer, 0, read);
}
gcos.close();
bis.close();
return path+ ".gz";
}
/**
* 递归处理,准备好路径
* @param file
* @param tos
* @param base
* @throws IOException
* @author yutao
*/
private static void archiveDir(File file, TarArchiveOutputStream tos, String basePath) throws IOException {
File[] listFiles = file.listFiles();
for(File fi : listFiles){
if(fi.isDirectory()){
archiveDir(fi, tos, basePath);
}else{
archiveHandle(tos, fi, basePath);
}
}
}
TEXT文件压缩.tar.gz文件
最新推荐文章于 2024-11-02 16:06:43 发布
该代码段展示了一个Java方法,用于将指定的文件或目录压缩成.tar.gz格式。首先,它创建一个.tar文件,然后使用GzipCompressorOutputStream对.tar文件进行gzip压缩,生成.tar.gz文件。方法包括递归处理目录和单独处理文件的逻辑。
摘要由CSDN通过智能技术生成