我使用下面的方法來寫InputStream
到File
:如何使用NIO將InputStream寫入文件?
private void writeToFile(InputStream stream) throws IOException {
String filePath = "C:\\Test.jpg";
FileChannel outChannel = new FileOutputStream(filePath).getChannel();
ReadableByteChannel inChannel = Channels.newChannel(stream);
ByteBuffer buffer = ByteBuffer.allocate(1024);
while(true) {
if(inChannel.read(buffer) == -1) {
break;
}
buffer.flip();
outChannel.write(buffer);
buffer.clear();
}
inChannel.close();
outChannel.close();
}
我想知道,這是使用NIO的正確途徑。我已閱讀的方法FileChannel.transferFrom
,這需要三個參數:
- 的ReadableByteChannel SRC
- 多頭
- 長計數
在我來說,我只有src
,我沒有position
和count
,有沒有什麼辦法可以使用這種方法來創建文件?
也爲圖像有沒有更好的方式來創建圖像只從InputStream
和NIO?
任何信息對我來說都是非常有用的。在這裏也有類似的問題,但我無法找到適合我的案例的任何特定解決方案。
爲什麼這麼複雜?你可以在一行中做同樣的事情:'Files.copy(stream,new File(「C:\\ Test.jpg」)。toPath());' – Jesper