Sto usando seguente modo di scrivere InputStream
-File
:Come utilizzare NIO per scrivere InputStream su 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();
}
mi chiedevo se questo è il modo giusto di usare NIO. Ho letto un metodo FileChannel.transferFrom
, che prende tre parametri:
- ReadableByteChannel src
- posizione lunga
- lungo conto
Nel mio caso ho solo src
, non ho il position
e count
, esiste un modo per utilizzare questo metodo per creare il file?
Anche per Immagine esiste un modo migliore per creare l'immagine solo da InputStream
e NIO?
Qualsiasi informazione sarebbe molto utile per me. Ci sono domande simili qui, in SO, ma non riesco a trovare nessuna soluzione particolare che soddisfi il mio caso.
Perché farlo in un modo così complicato? Puoi fare lo stesso in una riga: 'Files.copy (stream, new File (" C: \\ Test.jpg "). ToPath());' – Jesper