Я использую следующий способ записи InputStream
в File
:
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?
Любая информация была бы очень полезной для меня. Здесь есть похожие вопросы, в SO, но я не могу найти какое-либо конкретное решение, которое подходит для моего случая.