Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ZipEntry写入文件的最可读方式?_Java - Fatal编程技术网

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
。我很惊讶在番石榴图书馆里找不到。(显然,)

我所说的“可读性”也是指简洁,因此我希望避免创建新的匿名类,通常我认为可以通过较少的调用来完成相同的任务。