Java 将ZipEntry写入文件的最可读方式?
给定Java 将ZipEntry写入文件的最可读方式?,java,Java,给定zip、其条目和目标unzippedEntryFile,将entry写入unzippedEntryFile的可读性最高的方法是什么 我使用和提出了以下解决方案: InputSupplier entryInputSupplier=ByteStreams.newInputStreamSupplier(IOUtils.toByteArray(zip.getInputStream(entry)); 文件.copy(entryInputSupplier,解压缩文件); 然而,有些事情告诉我,它可以变
zip
、其条目
和目标unzippedEntryFile
,将entry
写入unzippedEntryFile
的可读性最高的方法是什么
我使用和提出了以下解决方案:
InputSupplier entryInputSupplier=ByteStreams.newInputStreamSupplier(IOUtils.toByteArray(zip.getInputStream(entry));
文件.copy(entryInputSupplier,解压缩文件);
然而,有些事情告诉我,它可以变得更简单
谢谢,康拉德这里有一个快速链接,可能包含所有可能的场景。如果是简单的文件操作,下面是Sun的教程。我确信有很多开源API。这里是到的链接。干杯我不知道你的代码有什么地方不可读,除了你有很多嵌套调用。这些可以被分解并分配给局部变量,这将使代码更长(但在我看来,可读性更强) 您似乎在处理数据两次——一次将其读入字节数组,另一次将其复制到文件中。我还没有对此进行测试,但它应该可以工作并将数据移动量减少一半:
final InputStream zipStream = zip.getInputStream(entry);
InputSupplier<InputStream> supplier = new InputSupplier<InputStream>() {
InputStream getInput() {
return zipStream;
}
};
Files.copy(supplier, unzippedEntryFile);
final InputStream zipStream=zip.getInputStream(条目);
输入供应商=新输入供应商(){
InputStream getInput(){
回流;
}
};
文件。副本(供应商,解压缩文件);
事实上,您可以创建自己的小类来实现InputSupplier
。我很惊讶在番石榴图书馆里找不到。(显然,)我所说的“可读性”也是指简洁,因此我希望避免创建新的匿名类,通常我认为可以通过较少的调用来完成相同的任务。