0

嘿伙计们,我目前正在使用 jarchivelib,可以在这里找到。我一直在想办法读取文件而不必使用 unpack 方法,因为它会生成一个解压版本的文件。前任:

File archive = new File("/home/jack/archive.zip");

File destination = new File("/home/jack/archive");

Archiver archiver = ArchiverFactory.createArchiver(ArchiveFormat.ZIP); archiver.extract(archive, destination);

我想做它,所以我不必解压它来读取文件......如果没有办法做到这一点,我猜在我的 Jframe.setDefualtCloseOpperation 方法中我将不得不定制一个所以它会删除文件吗?还是有更好的方法来处理临时文件?

4

2 回答 2

0

从 0.4.0 版开始,jarchivelib Archiver API 支持流式传输存档,而不是将其直接提取到文件系统中。

ArchiveStream stream = archiver.stream(archive);
ArchiveEntry entry;

while((entry = stream.getNextEntry()) != null) {
    // access each archive entry individually using the stream
    // or extract it using entry.extract(destination)
    // or fetch meta-data using entry.getName(), entry.isDirectory(), ...
}
stream.close();

当流在调用之后指向一个条目时,您可以像读取单个条目一样getNextEntry使用这些方法。stream.read

于 2014-02-24T14:08:12.557 回答
0

如果您只想提取文件,为什么不使用 Java 的内置 zip 来提取文件,或者如果它受密码保护,您可以使用Zip4j。这些库支持流,因此您可以提取文件的内容而无需将其写入 FileStream

于 2013-09-23T13:49:21.640 回答