我正在开发一个项目,我必须提取一个 .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/