使用 jakarta.commons.compress-1.0.jar
public class Compress {
public static void main(String[] args) throws IOException {
String tarGzPath = "/home/ben/language/java/compress.tar.gz";
String directoryPath = "/home/ben/language/java/Compress.java";
Compress.createTarGzOfDirectory(directoryPath, tarGzPath);
}
/**
* Creates a tar.gz file at the specified path with the contents of the specified directory.
*
* @param dirPath The path to the directory to create an archive of
* @param archivePath The path to the archive to create
* @throws IOException If anything goes wrong
*/
public static void createTarGzOfDirectory(String directoryPath, String tarGzPath) throws IOException {
FileOutputStream fOut = null;
BufferedOutputStream bOut = null;
GzipCompressorOutputStream gzOut = null;
TarArchiveOutputStream tOut = null;
try {
fOut = new FileOutputStream(new File(tarGzPath));
bOut = new BufferedOutputStream(fOut);
gzOut = new GzipCompressorOutputStream(bOut);
tOut = new TarArchiveOutputStream(gzOut);
addFileToTarGz(tOut, directoryPath, "");
} finally {
tOut.finish();
tOut.close();
gzOut.close();
bOut.close();
fOut.close();
}
}
/**
* Creates a tar entry for the path specified with a name built from the base passed in and the file/directory name.
* If the path is a directory, a recursive call is made such that the full directory is added to the tar.
*
* @param tOut The tar file's output stream
* @param path The filesystem path of the file/directory being added
* @param base The base prefix to for the name of the tar file entry
* @throws IOException If anything goes wrong
*/
private static void addFileToTarGz(TarArchiveOutputStream tOut, String path, String base) throws IOException {
File f = new File(path);
String entryName = base + f.getName();
TarArchiveEntry tarEntry = new TarArchiveEntry(f, entryName);
tOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
tOut.putArchiveEntry(tarEntry);
if (f.isFile()) {
IOUtils.copy(new FileInputStream(f), tOut);
tOut.closeArchiveEntry();
} else {
tOut.closeArchiveEntry();
File[] children = f.listFiles();
if (children != null) {
for (File child : children) {
addFileToTarGz(tOut, child.getAbsolutePath(), entryName + "/");
}
}
}
}
}
解压看这边博文:http://blog.pigflying.info/2011/06/commons-compresstargz.html
原文出处:http://www.thoughtspark.org/node/53
分享到:
相关推荐
在Java中,由于标准库并未提供直接处理`tar.gz`的API,我们需要借助第三方库如Apache Commons Compress或者JSch来实现。这里我们将重点介绍Apache Commons Compress库的使用方法。 1. **压缩成tar.gz文件**: - ...
} } }}二、从 tar.gz 文件解压文件在 Java 中,我们可以使用 Apache Commons Compress 库来解压 tar.gz 文件。下面的例子展示了如何将 tar.gz 文件解压到指定的目录。import org.apache.commons.compress.archivers...
3. **支持的格式**:`commons-compress`库不仅支持常见的ZIP和JAR格式,还支持BZip2(bz2)、Gzip(gz)、XZ、Pack200、TAR、RAR、7z等多种压缩格式。对于每种格式,都有相应的类用于读写操作,如`BZip2...
Apache Commons Compress库是Java社区广泛使用的处理各种压缩格式的库,包括tar.gz。要使用这个库,首先需要将它的jar包添加到项目的类路径中。 1. 添加依赖: 如果你在Maven项目中,可以在pom.xml文件中添加以下...
通过`org.apache.commons.compress.archivers.tar.TarArchiveInputStream`和`org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream`,可以轻松地解压并读取.tar.gz文件。 ```java import org...
Apache Commons Compress库支持多种压缩和归档格式,如7z、AR、ARJ、BZip2、CPIO、DEFLATE、Gzip、LZMA、Pack200、RAR、SNappy、TAR、XZ、Z和ZIP等。这些格式广泛应用于数据存储、备份和传输。通过使用这个库,...
虽然在“commons-codec-1.6-bin.tar.gz”中并未直接包含BZip2的功能,但在其他Apache组件如Apache Commons Compress中可以找到相关实现。 6. **Phonetic编码**:如Soundex、Metaphone和Caverphone等,这些是将英语...
Java,包,NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile,压缩包中的commons-compress-1.20\commons-compress-1.20.jar应该能解决吧,不清楚
除了ZIP、GZIP和7z,Apache Commons Compress还支持其他许多格式,如BZIP2、XZ、AR、ARJ、CPIO、TAR、WAR、RAR、LZH、LZMA、Pack200等。这些格式的处理方式类似,只需要替换对应的`ArchiveOutputStream`和`...
Commons Compress 是一个Java库,专门用于处理各种文件压缩格式,包括但不限于tar、gzip、bzip2、xz、7z等。这个库是由Apache软件基金会开发的,是Apache Commons项目的一部分,旨在提供一种统一的方式来处理各种...
Apache Commons Compress库是Java开发中处理压缩格式的一个强大工具,其版本号为1.18,代表了该库在不断更新和优化中,提供了对多种压缩格式的支持,包括但不限于ZIP、TAR、GZ、BZ2等。这个库的主要目标是统一各种...
apache commons jar(commons所有的jar包,从官网下载提供给大家) 因为涉及jar太多,包括有src源代码,只需要3分,希望大家理解,我也是从官网花了很长时间才一个一个下完,需要的请自取。全部是zip文件,每个对应的...
在Java中,我们可以使用`java.util.zip`包中的`ZipInputStream`和`ZipOutputStream`类来处理tar文件,但需要注意的是,这些类不直接支持tar格式,所以我们需要借助第三方库,如Apache Commons Compress或JSAPAR。...
例如,`org.apache.commons.compress.archivers.tar`用于处理TAR格式,`org.apache.commons.compress.compressors.bzip2`处理BZIP2格式。每个子包都包含了一些关键类,如ArchiveInputStream和ArchiveOutputStream,...
最后,`.tar`文件的处理主要依赖于Apache的`commons-compress`库。`TarOutputStream`和`TarEntry`可以用来创建`.tar`文件,而`TarInputStream`则用于解压缩`.tar`文件。 ```java // 创建.TAR文件 File[] files = .....
commons-compress库能够处理多种TAR变体,如GNUTAR、PAX、STAR等。 10. **XZ (XZ)**:XZ是基于LZMA2的压缩格式,提供了更强的压缩和安全特性。Apache Commons Compress支持读写XZ文件。 11. **Z (ZLIB)**:ZLIB是...
该库是 Apache Commons Compress 库的简单包装器,但它提供了一个更易于使用的面向文件的界面。 安装 无论出于何种目的,您都可以按照您认为合适的方式使用该库。 我不保证这有效,但如果你愿意,你可以。 要使用它...
除了直接解压文件,Apache Commons Compress还支持读取压缩归档文件(如tar、tar.bz2或tar.gz),你可以通过TarArchiveInputStream、TarArchiveOutputStream等类进行操作。例如,如果你有一个tar.gz文件,可以先用...
- TAR:一种无损数据存储格式,通常与其他压缩格式结合使用,如`.tar.gz`(GZIP)或`.tar.bz2`(BZIP2)。 - GZIP:用于单个文件的压缩,基于DEFLATE算法。 - BZIP2:提供比GZIP更高的压缩率,但压缩速度较慢。 ...
在给定的压缩包 "apache-ant-compress-1.5-bin-withdeps.tar.gz" 中,包含了Apache Ant的1.5版本,它是一个包含所有依赖的二进制分发版,适合快速开始使用。 描述中提到的 "ant/antlibs/compress/binaries" 指的是...