Java 预览.7z内容和子文件夹而不提取
我希望预览.7z的内容,而不使用Java进行解压缩,因此我尝试使用Apache Commons Compress:Java 预览.7z内容和子文件夹而不提取,java,7zip,apache-commons-compress,Java,7zip,Apache Commons Compress,我希望预览.7z的内容,而不使用Java进行解压缩,因此我尝试使用Apache Commons Compress: public static void main(String[] args) { try { SevenZFile sevenZFile = new SevenZFile(new File("C://test.7z")); SevenZArchiveEntry entry; while ((entry = sevenZFile
public static void main(String[] args) {
try {
SevenZFile sevenZFile = new SevenZFile(new File("C://test.7z"));
SevenZArchiveEntry entry;
while ((entry = sevenZFile.getNextEntry()) != null) {
System.out.println("Name: " + entry.getName());
System.out.println("Size : " + entry.getSize());
System.out.println("--------------------------------");
}
} catch (Exception e) {
e.printStackTrace();
}
}
它可以工作,但我也想将文件预览到其他7z或原始7z的zip:
test.7z
--- file1.txt
--- otherInner.7z
---- innerFile1.txt
---- innerFile2.txt
有没有办法在不提取7z的情况下这样做?
谢谢你的帮助。有点。你的意思是不提取外7z?对不提取内部7z?没有 看起来ApacheCommons SevenZ只对文件对象有效,因此您必须至少提取内部7z文件,然后对其进行解码 一旦有了所需的
条目
,就可以从该条目的字节数组中读取字节。然后,您可以将这些字节写入(temp)文件,然后创建一个新的SevenZFile
对象来解析该文件
此代码主要取自:
现在我们已经将压缩的字节存储在byte[]
中,我们必须将其写入一个文件,然后我们可以使用另一个SeventZFile实例对其进行解压缩
您可能可以跳过中间字节[],而是直接读写临时文件,但无论如何,您都必须在某个地方创建临时文件。我不确定,但我认为这不可能,因为sub 7zip文件是压缩的,所以7zip需要解压以分析里面的内容。这也是我的观点,但我不确定。。。谢谢你的回答是的dkatzel,它没有提取外部和内部7z。。。谢谢你详细的回答
SevenZFile sevenZFile =...
SevenZArchiveEntry entry...
...found our entry we want...
byte[] content = new byte[entry.getSize()];
LOOP UNTIL entry.getSize() HAS BEEN READ {
sevenZFile.read(content, offset, content.length - offset);
}