获取 org.tukaani.xz.CorruptedInputException:提取 7z 文件时压缩数据损坏错误。我正在使用 common-compress-1.21.jar 和 xz-1.9.jar。这是我的代码
File f = new File("/home/local/Documents/7zFile/7zFile.7z");
InputStream inputStream;
ArchiveEntry entry = null;
try {
inputStream = new FileInputStream(f);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (!inputStream.markSupported()) {
inputStream = new BufferedInputStream(inputStream);
}
inputStream.mark(Integer.MAX_VALUE);
byte[] inputData = IOUtils.toByteArray(inputStream);
inputStream.reset();
SeekableInMemoryByteChannel channel = new
SeekableInMemoryByteChannel(inputData);
sevenZFile = new SevenZFile(channel);
while ((sevenZFile!=null && (entry = sevenZFile.getNextEntry()) != null)) {
System.out.print(entry.getName());
}
堆栈跟踪错误
org.tukaani.xz.CorruptedInputException: Compressed data is corrupt
at org.tukaani.xz.LZMAInputStream.read(Unknown Source)
at org.apache.commons.compress.utils.ChecksumVerifyingInputStream.read(ChecksumVerifyingInputStream.java:88)
at org.apache.commons.compress.utils.IOUtils.copyRange(IOUtils.java:330)
at org.apache.commons.compress.utils.IOUtils.copyRange(IOUtils.java:301)
at org.apache.commons.compress.utils.IOUtils.readRange(IOUtils.java:350)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.readEncodedHeader(SevenZFile.java:706)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.initializeArchive(SevenZFile.java:544)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.readHeaders(SevenZFile.java:474)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.<init>(SevenZFile.java:343)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.<init>(SevenZFile.java:255)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.<init>(SevenZFile.java:183)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.<init>(SevenZFile.java:167)
在这一行中,sevenZFile = new SevenZFile(channel);
它的抛出错误。
我已经在 ubuntu OS 中为这个文件创建了 7z 存档文件,它抛出异常,我创建的在线网站的 7z 存档工作正常。ubuntu有什么问题吗?以及如何解决这个问题?
提前致谢。