将ZipEntry写入文件的最可读方式?

时间:2012-10-19 16:29:59

标签: java

鉴于ZipFile zipZipEntry entry和目标File unzippedEntryFile,最可读的方式是{{1到entry

我使用Google GuavaApache.Commons.IO

提出了以下解决方案
unzippedEntryFile

然而,有些东西告诉我它可以简化。

谢谢,
康拉德

2 个答案:

答案 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的链接。干杯