本文转载自 https://blog.csdn.net/Crazyer0214/article/details/78048434
一、文件格式介绍
最近从Linux系统中copy了一个tar。z压缩文件,用于解压测试。
文件格式为*.tar压缩包下,还有*.z压缩包
如:压缩包paid_orderlist_20170920.tar,该tar包下有一个paid_orderlist_20170920.z压缩包,z包下有一个数据文件paid_orderlist_20170920.dat
即如果获取paid_orderlist_20170920.dat文件,需要分别解压tar包和z包。
二、文件解压(java实现)
1.前言
目前网络上解压*.tar文件以及其他压缩格式文件的java例子很多,大多都使用的是
commons-compress-1.x.jar或者javatar-2.x.jar工具进行解压操作。但真正实现解压tar.z文件的例子确不多见。
tar.z格式作为linxu中常见压缩文件格式,java实现解压操作可能会在项目中经常遇到。在参照网上例子及个人实践总结后,成功实现了对该文件的解压操作。
2.jar包准备
所需jar包:commons-compress-1.x.jar(网上介绍说需1.7版本及以上,反正亲测1.4版本不行,下载了1.7版本测试成功)
推荐maven下载:
-
-
<groupId>org.apache.commons</groupId>
-
<artifactId>commons-compress</artifactId>
-
-
可从apache下载https://commons.apache.org/proper/commons-compress/download_compress.cgi
3.java代码实现
-
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
-
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
-
import org.apache.commons.compress.compressors.z.ZCompressorInputStream;
-
-
-
-
-
-
-
public static void main(String[] args) {
-
File tarFile= new File("E:\\TARZ\\paid_orderlist_20170920.tar");
-
List<String> zFileNames = unTarFile(tarFile);
-
for (String zFileName:zFileNames ){
-
File zFile = new File("E:\\TARZ\\"+zFileName);
-
unZFile(zFile,"E:\\TARZ\\");
-
-
-
-
* 解压*.z文件 * @param file z包文件
-
* @param outPath z包下解压后文件存放路径
-
-
-
public static File unZFile(File file,String outPath) {
-
-
FileOutputStream out = null;
-
ZCompressorInputStream zIn = null;
-
-
FileInputStream fin = new FileInputStream(file);
-
BufferedInputStream in = new BufferedInputStream(fin);
-
// 若获取z文件名,最好使用lastIndexOf,不要使用indexOf,比如paid_orderlist_20170920.test.z
-
String name = file.getName() .substring(0, file.getName().lastIndexOf("."));
-
File outFile = new File(outPath+File.separator + name);
-
out = new FileOutputStream(outFile);
-
zIn = new ZCompressorInputStream(in);
-
final byte[] buffer = new byte[buffersize];
-
-
while (-1 != (n = zIn.read(buffer))) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
public static List<String> unTarFile(File file) {
-
-
String basePath = file.getParent() + File.separator;
-
TarArchiveInputStream is = null;
-
-
List<String> zFileNames = new ArrayList<String>();
-
-
is = new TarArchiveInputStream(new FileInputStream(file));
-
-
TarArchiveEntry entry = is.getNextTarEntry();
-
-
-
-
zFileNames.add(entry.getName());
-
if (entry.isDirectory()) {
-
-
new File(basePath + entry.getName()).mkdirs();
-
-
FileOutputStream os = null;
-
-
File f = new File(basePath + entry.getName());
-
if (!f.getParentFile().exists()) {
-
f.getParentFile().mkdirs();
-
-
-
-
-
os = new FileOutputStream(f);
-
byte[] bs = new byte[buffersize];
-
-
while ((len = is.read(bs)) != -1) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
分享到:
相关推荐
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
1. **解压tar.Z文件**: 使用`uncompress`命令可以解压`.Z`文件。在终端中输入以下命令: ``` uncompress 文件名.tar.Z ``` 这将把`.Z`文件解压为`.tar`文件。 2. **解包tar文件**: 接下来,我们需要使用`...
2. **解压**:使用`tar -zxvf jdk-8u202-linux-x64.tar.gz`命令在Linux环境下解压文件,得到`jdk1.8.0_202`目录。 3. **配置环境变量**:在系统路径文件(如`~/.bashrc`或`/etc/profile`)中设置`JAVA_HOME`、`PATH...
4. **.tar.gz文件格式**: 这是Linux和Unix系统常用的文件打包和压缩格式。".tar"表示一个未经压缩的归档文件,可以将多个文件和目录打包在一起;".gz"表示使用gzip压缩算法进行了压缩,以减小文件大小,方便传输和...
Linux JDK 11.0.10 是Java开发工具包(Java Development Kit)的一个版本,专为Linux操作系统设计,适用于64位架构。这个版本的JDK是Oracle公司发布的,它包含了运行和开发Java应用程序所需的组件和服务。"jdk-...
在Linux环境下,首先需要解压`openjdk-11.0.1_linux-x64_bin.tar.gz`,然后通过系统环境变量配置,使系统识别到OpenJDK 11.0.1的安装路径,以便在命令行中使用`java`, `javac`等工具。 7. **开发与调试** 开发者...
2. **HTTP客户端API**:JDK 11内置了新的HTTP客户端API(`java.net.http`包),提供非阻塞I/O和异步操作,以支持现代Web服务交互。 3. **动态类型语言支持**:JEP 335增加了对动态类型语言(如Groovy和JRuby)的...
OpenJDK 17.0.2 是一个开源的 Java 开发工具包,它实现了 Java 虚拟机(JVM)和 Java 类库,是 Java 开发的重要基础。这个版本特别针对 macOS 系统的 aarch64 架构进行了优化,这意味着它可以无缝地在基于 Apple M1 ...
解压"openjdk-11+28_linux-x64_bin.tar.gz"后,会得到"openjdk-11+28_linux-x64_bin"目录,其中包含了OpenJDK的可执行文件和库,例如`bin`目录下的`java`, `javac`, `jar`等命令行工具,以及`lib`目录下的各种JDK库...
这个压缩包文件"jdk-15.0.1_linux-x64_bin.tar.gz"包含了运行和开发Java应用程序所需的所有核心组件。JDK是Java程序员的必备工具,它提供了编译器、JRE(Java Runtime Environment)、调试器和其他必要的工具,使得...
安装JDK 11时,通常会解压`.tar.gz`文件,然后将解压后的目录添加到系统的PATH环境变量中,以便在任何地方使用`javac`编译器和`java`解释器。此外,开发人员还需要配置`JAVA_HOME`环境变量,指向JDK的安装位置,以便...
在解压OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.10_9.tar.gz后,你会得到一个名为jdk-11.0.10+9的目录,其中包含了OpenJDK的所有组件,如JRE(Java Runtime Environment)和JDK工具,如javac编译器、javadoc文档...
命令行操作可能包括`tar -zxvf openjdk-15_linux-x64_bin.tar.gz`来解压,`sudo cp -r jdk-15/* /usr/lib/jvm/`来复制文件,以及`sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-15/bin/...
在`openjdk-17.0.2_linux-x64_bin.tar.gz`压缩包中,主要包含的文件是`jdk-17.0.2`,这通常是一个解压后包含整个JDK目录的文件。解压后,你会找到以下关键组件: 1. **bin**:包含了Java命令行工具,如`java`(执行...
在Linux环境下,可以使用`unzip`命令解压`.zip`文件,然后使用`tar`命令解压`.tar.gz`文件。解压后,可以将JDK的安装目录添加到`PATH`环境变量中,以便系统可以在任何地方找到Java命令。 配置完成后,可以使用`java...
为了使用这个JDK,用户需要先用7-Zip或其他支持7z格式的工具解压".7z"文件,然后用tar命令解压".tar.gz"文件,最后根据Oracle JDK的安装指南将其添加到系统路径,以便于在命令行环境中使用javac(Java编译器)和java...
在处理`IBM_JDK.tar.gz`时,我们需要先用`tar`命令解压,然后用`gzip`或者`gunzip`命令来解压缩,以便获取IBM JDK的原始文件结构。 IBM JDK与Oracle JDK相比,有以下几个显著的区别和优势: 1. **性能优化**:IBM ...
解压后,我们可以看到包含以下几个关键目录和文件: 1. **release**:这个文件通常包含了JRE的具体版本信息,例如Java版本号、构建号等,这对于识别和管理不同版本的JRE至关重要。 2. **legal**:该目录包含了关于...
标题中的"jdk-11.0.13_linux-x64_bin.tar.gz.7z"表明这是一个针对Linux 64位系统的Java Development Kit (JDK) 的版本11.0.13,它被压缩成了两个层次:首先是一个`.tar.gz`归档,然后这个归档又被7-Zip软件进行了`.7...
MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity...在Linux环境下,我们需要通过`tar`命令解压文件,然后在Java代码中加载驱动并使用JDBC接口来操作数据库。