Java : Extract . gz:错误:找不到流签名的存档器

标签 java compression gzip

我正在开发一个项目,我必须提取一个 .gz 文件,其中包含文本格式的日志文件。我正在尝试这段代码:

public void extractFile(String sourceFilePath) {
    // Untar....

    System.out.println("\n\nextracting file ............... ");

    File sourceFile = new File(sourceFilePath);

    //create the directory to download
    createFile("/home/myname/workspace/log-monitor/target/classes/extractDir");

    File destDir = new File("/home/myname/workspace/log-monitor/target/classes/extractDir");

    Archiver archiver = ArchiverFactory.createArchiver(ArchiveFormat.TAR, CompressionType.GZIP);
    try {
        archiver.extract(sourceFile, destDir);
    } catch (IOException ex) {
        // TODO Auto-generated catch block
        ex.printStackTrace();
    }

}

我收到错误:

java.io.IOException: org.apache.commons.compress.archivers.ArchiveException: No Archiver found for the stream signature

导入:

 import org.rauschig.jarchivelib.*;

并在 POM 中添加了以下内容:

<dependency>
<groupId>org.rauschig</groupId>
<artifactId>jarchivelib</artifactId>
<version>0.3.0</version>
</dependency>

我的是CentOS操作系统。并使用jdk1.7。

有关我尝试的更多信息:

 Archiver archiver = ArchiverFactory.createArchiver(ArchiveFormat.TAR, CompressionType.GZIP);

 ArchiverFactory.createArchiver("gz");

它们都不起作用。

任何人都可以帮忙吗?我确信它与格式化有关,但不确定 .gz 文件的格式。

提前致谢。

最佳答案

也许这会有所帮助:

File a = new File("data/readme.txt.gz");
File o = new File("data/");
Compressor compressor = CompressorFactory.createCompressor(a);
try {
    compressor.decompress(a, o);
} catch (IOException ex) {
    ex.printStackTrace();
}

关于Java : Extract . gz:错误:找不到流签名的存档器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23501715/

相关文章:

http - Google App Engine - 如何正确压缩请求

java - java和android的加密区别

java - 在给定迭代器的情况下使用 for-each 循环的惯用方式?

c# - 如何解决 Gzip 魔数(Magic Number)丢失的问题

c - 文件搜索场景中的 zlib 压缩问题,zlib 中是否有任何锁定/标志机制可以在这些机制之间保持完整性

node.js - 使用 gulp-gzip 时 Gulp SourceMaps 不工作

java - 是否可以在不循环的情况下从自定义类的Arraylist中获取产品名称的Arraylist

java - 如何发布使用 GSON 解析大型 json 文件的进度

image-processing - 在 opencv 中保存 tiff 文件时,有没有办法设置特定的压缩方案?

swift - 如何将数据附加到压缩文件?