org.tukaani.xz.CorruptedInputException:在 java 中提取 7z 存档文件时压缩数据已损坏
org.tukaani.xz.CorruptedInputException: Compressed data is corrupt while extracting 7z archive File in java
正在获取 org.tukaani.xz.CorruptedInputException:提取 7z 文件时出现压缩数据损坏错误。我正在使用 common-compress-1.21.jar 和 xz-1.9.jar.here 是我的代码
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());
}
stackTrace 错误
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 有什么问题吗?以及如何解决这个问题?
提前致谢。
LZMA 数据有流结束标记。这样的 .7z 文件是有效的,但并不常见。 XZ for Java 1.9 专门增加了一个特性。请找到这个 link 以便更好地理解。 https://issues.apache.org/jira/browse/COMPRESS-591
https://sourceforge.net/p/lzmautils/discussion/708858/thread/822d80d5ea/
正在获取 org.tukaani.xz.CorruptedInputException:提取 7z 文件时出现压缩数据损坏错误。我正在使用 common-compress-1.21.jar 和 xz-1.9.jar.here 是我的代码
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());
}
stackTrace 错误
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 有什么问题吗?以及如何解决这个问题?
LZMA 数据有流结束标记。这样的 .7z 文件是有效的,但并不常见。 XZ for Java 1.9 专门增加了一个特性。请找到这个 link 以便更好地理解。 https://issues.apache.org/jira/browse/COMPRESS-591
https://sourceforge.net/p/lzmautils/discussion/708858/thread/822d80d5ea/