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

Java:Extract.gz:错误:找不到流签名的存档程序,java,compression,gzip,Java,Compression,Gzip,我正在做一个项目,我必须提取一个.gz,里面有一个文本格式的日志文件。我正在尝试以下代码: public void extractFile(String sourceFilePath) { // Untar.... System.out.println("\n\nextracting file ............... "); File sourceFile = new File(sourceFilePath); //create the direct

我正在做一个项目,我必须提取一个.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>
他们都没有工作

有人能帮忙吗。我确信这是关于格式化的,但不确定如何处理.gz文件

提前谢谢。

也许这会有帮助:

File a=新文件(“data/readme.txt.gz”);
文件o=新文件(“数据/”);
压缩机压缩机=压缩机工厂。创建压缩机(a);
试一试{
压缩机。减压(a,o);
}捕获(IOEX异常){
例如printStackTrace();
}

请发布完整的错误堆栈跟踪
 Archiver archiver = ArchiverFactory.createArchiver(ArchiveFormat.TAR, CompressionType.GZIP);

 ArchiverFactory.createArchiver("gz");