【发布时间】:2017-07-20 11:46:30
【问题描述】:
在尝试解码 LZMA 压缩 xls 文件时出现 org.tukaani.xz.UnsupportedOptionsException: Uncompressed size is too big 错误。而非 LZMA 文件可以毫无问题地解包/解码。两种情况下同一个 xls 文件被压缩。
我正在使用 Apache commons compress 和 org.tukaani.xz。
示例代码供参考
package com.concept.utilities.zip;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream;
public class ApacheComm {
public void extractLZMAZip(File zipFile, String compressFileName, String destFolder) {
ZipFile zip = null;
try {
zip = new ZipFile(zipFile);
ZipArchiveEntry zipArchiveEntry = zip.getEntry(compressFileName);
if (null != zipArchiveEntry) {
String name = zipArchiveEntry.getName();
// InputStream is = zip.getInputStream(zipArchiveEntry);
InputStream israw = zip.getRawInputStream(zipArchiveEntry);
LZMACompressorInputStream lzma = new LZMACompressorInputStream(israw);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != zip)
ZipFile.closeQuietly(zip);
}
}
public static void main(String[] args) throws IOException {
ApacheComm c = new ApacheComm();
try {
c.extractLZMAZip(new File("H:\\archives\\rollLZMA.zip"), "roll.xls", "H:\\archives\\");
} catch (Exception e) {
e.printStackTrace();
}
}
}
错误
org.tukaani.xz.UnsupportedOptionsException: Uncompressed size is too big
at org.tukaani.xz.LZMAInputStream.initialize(Unknown Source)
at org.tukaani.xz.LZMAInputStream.<init>(Unknown Source)
at org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream.<init>(LZMACompressorInputStream.java:50)
at com.concept.utilities.zip.ApacheComm.extractLZMAZip(ApacheComm.java:209)
at com.concept.utilities.zip.ApacheComm.main(ApacheComm.java:224)
我错过了什么吗?有没有其他方法可以解码 zip 文件与压缩方法 = LZMA
【问题讨论】:
-
您要解码的文件有多大?
-
为了测试我使用的是小 xls 文件。有两列和三行,包括标题。 26KB。
-
压缩文件本身有多大?
-
3 KB。 Zip 文件包含一个 xls。
标签: java apache lzma compression