在本文中主要阐述如何用程序的方法解压tar.gz文件,tar是把文件打成一个包,并不压缩;.gz是用gzip把打成包的.tar文件压缩,所以成了一个.tar.gz的文件,这是linux下面常见的压缩文件格式。
在尝试了ZipFile之后,发现仅仅jdk里面提供的类及方法不足以解压tar.gz文件,于是用到了commons-compress-1.0.jar,它是apache提供的jar包,需要的话可以在附件中下载。
下面的程序片段提供了解压文件的方法,其中outputDirectory是解压后的文件存放位置,zipfileName是待解压的文件。in.getNextEntry()以深度遍历的方法取得下一个文件或者文件夹,如果一个文件夹的结构如下所示
root
--- folder1
-- file1.txt
--- folder2
-- folder3
--- file2.bmp
则entry.getName输出结果为:
root/
root/folder1/
root/folder/file1.txt
root/folder2/
root/folder2/folder3
root/folder2/folder3/file2.bmp
根据输出的结果可以判断出是文件夹还是文件。(是否以"/"结尾) 如果是文件,需要将文件的内容复制一份到新的文件中,否则只需要创建一个文件夹即可。
public void unzipFile(String outputDirectory, String zipfileName) {
FileInputStream fis = null;
ArchiveInputStream in = null;
BufferedInputStream bufferedInputStream = null;
try {
fis = new FileInputStream(zipfileName);
GZIPInputStream is = new GZIPInputStream(new BufferedInputStream(
fis));
in = new ArchiveStreamFactory().createArchiveInputStream("tar", is);
bufferedInputStream = new BufferedInputStream(in);
TarArchiveEntry entry = (TarArchiveEntry) in.getNextEntry();
while (entry != null) {
String name = entry.getName();
String[] names = name.split("/");
String fileName = outputDirectory;
for (String str : names) {
fileName = fileName + File.separator + str;
}
if (name.endsWith("/")) {
mkFolder(fileName);
} else {
File file = mkFile(fileName);
bufferedOutputStream = new BufferedOutputStream(
new FileOutputStream(file));
int b;
while ((b = bufferedInputStream.read()) != -1) {
bufferedOutputStream.write(b);
}
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
entry = (TarArchiveEntry) in.getNextEntry();
}
} catch (...)
}
分享到:
相关推荐
tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压tar.gz解压
windows下解压linux环境下一些压缩包,tar gz ,测试压缩包,提取文件等
可以非常简便地解压.tar, .tar.gz, .tgz or .gzip文件,还可以自定义解压后的路径。 可以非常简便地解压.tar, .tar.gz, .tgz or .gzip文件,还可以自定义解压后的路径。
3.tar.gz或.tgz通常是指将文件打包到一个tar文件中,并将它使用Gzip进行压缩。 一、将两个文件打包到tar.gz 下面的这个例子是将2个文件打包为tar.gz压缩文件。下文代码中的流操作使用了try-with- resources语法,...
linux 怎么解压 tar.gz 文件
java读取tar.gz压缩文件的jar包
免费下载 mpc-1.1.0.tar.gz_FreeDownload.zip 文件后,解压此文件即可得到 mpc-1.1.0.tar.gz 源文件。
使用Java对文件夹压缩成tar.gz文件,使用Java对tar.gz压缩文件解压。
linux下的navicat121_premium_cs_x64.tar.gz安装文件 安装流程: 1.解压压缩包:cd到下载目录执行命令tar -zxvf navicat121_premium_cs_x64.tar.gz -C /opt 2.启动Navicat premium:cd /opt/navicat121_premium_cs_x...
Ubuntu18.04+OpenCV3.2.0源码安装时,出现错误:Failed to download v3.1.0/protobuf-cpp-3.1.0.tar.gz ,解决方法:下载附件zip文件,解压后得到protobuf-cpp-3.1.0.tar.gz文件,替换/opencv_contrib-3.2.0/modules...
mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz.zip.001 卷1 ...解压后文件为: mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz MD5: d241f5dd6527cf1f9ff39449538c1eb1 请不要给我5星好评,因为好评会上涨积分!
文件:openssl-1.1.1a.tar.gz 格式:*.tar.gz 来源:下载自官网 www.openssl.org 说明:于2018年12月下载,是当时的最新版、最高版 使用方法(亲测留档):以下为Ubuntu16.04.5上亲测,卸载并安装新版openssl # ...
elementary-1.12.2.tar.gz
复制CD中的VMwareTools-10.3.21-14772444.tar.gz文件到根目录下: cp /media/user/VMware\ Tools/VMwareTools-10.3.21-14772444.tar.gz / 然到移动到根目录: cd / 解压VMwareTools-10.3.21-14772444....
gz文件解压命令linux-WinRAR解压tar.gz压缩文件报错的解决方案.docx
mha必备包mha4mysql-node-0.56.tar.gz和mha4mysql-manager-0.56.tar.gz,2积分不多欢迎下载,方便大众。文件是个压缩包,解压后是两个文件。
解决安装vmwaretool的时候VMwareTools-10.2.0-7259539.tar.gz文件不存在的情况。下载此zip文件解压后的到VMwareTools-10.2.0-7259539.tar.gz就是好用的。
1.解压文件获得redis-4.0.6.tar包 2.redis-4.0.6.tar拷贝到服务器 3.cd /mnt 4.解压至任一目录 tar xzf redis-4.0.6.tar.gz
hbase-1.2.1-bin.tar.gz.zip 提示:先解压再使用,最外层是zip压缩文件
Centos7离线安装文件 jdk-8u231-linux-x64.tar.gz压缩包 免费下载,现在博客都是付费文件,搞得头大,现在免费分享