Ich verwende folgende Weise InputStream
-File
zu schreiben:Wie NIO verwenden, um InputStream in Datei zu schreiben?
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();
}
Ich frage mich, ob dies der richtige Weg NIO zu bedienen ist. Ich habe eine Methode FileChannel.transferFrom
, lesen Sie die drei Parameter übernimmt:
- ReadableByteChannel src
- Long-Position
- lange Zählung
In meinem Fall habe ich nur src
haben, ich habe nicht die position
und count
, gibt es eine Möglichkeit, wie ich diese Methode verwenden kann, um die Datei zu erstellen?
Auch für Bild gibt es eine bessere Möglichkeit, nur Bild von InputStream
und NIO zu erstellen?
Jede Information wäre sehr nützlich für mich. Es gibt ähnliche Fragen hier in SO, aber ich kann keine bestimmte Lösung finden, die zu meinem Fall passt.
Warum so kompliziert? Sie können dasselbe in einer Zeile machen: 'Files.copy (stream, neue Datei (" C: \\ Test.jpg "). ToPath());' – Jesper