鉴于ZipFile zip
,ZipEntry entry
和目标File unzippedEntryFile
,最可读的方式是{{1到entry
?
我使用Google Guava和Apache.Commons.IO
提出了以下解决方案unzippedEntryFile
然而,有些东西告诉我它可以简化。
谢谢,
康拉德
答案 0 :(得分:3)
除了你有很多嵌套调用之外,我不知道代码的可读性。这些可以分解并分配给局部变量,这会使代码更长(但在我看来,更具可读性)。
您似乎正在处理数据两次 - 一次将其读入字节数组并再次将其复制到文件中。我没有对此进行测试,但它应该可以工作并将数据量减少一半:
final InputStream zipStream = zip.getInputStream(entry);
InputSupplier<InputStream> supplier = new InputSupplier<InputStream>() {
InputStream getInput() {
return zipStream;
}
};
Files.copy(supplier, unzippedEntryFile);
事实上,您可以创建自己的实现InputSuppler<InputStream>
的小类。我很惊讶我在番石榴图书馆里找不到一个。 (显然,others have been surprised at this as well。)
答案 1 :(得分:1)
这是一个快速链接,可能包含Zip file operation的所有可能方案。如果是简单的文件操作,这里是Sun的教程。我确定有很多开源API。这是IO tutorial的链接。干杯