Tôi đang sử dụng cách sau để viết InputStream
-File
:Làm thế nào để sử dụng NIO để ghi InputStream vào 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();
}
tôi đã tự hỏi nếu điều này là đúng cách để sử dụng nio. Tôi đã đọc một phương pháp FileChannel.transferFrom
, trong đó có ba tham số:
- ReadableByteChannel src
- vị trí dài
- đếm dài
Trong trường hợp của tôi, tôi chỉ có src
, tôi không có position
và count
, có cách nào tôi có thể sử dụng phương pháp này để tạo tệp không?
Ngoài ra đối với hình ảnh là có cách nào tốt hơn để tạo hình ảnh chỉ từ InputStream
và NIO?
Mọi thông tin sẽ rất hữu ích đối với tôi. Có những câu hỏi tương tự ở đây, trong SO, nhưng tôi không thể tìm thấy bất kỳ giải pháp cụ thể nào bao gồm trường hợp của tôi.
Tại sao lại theo cách phức tạp như vậy? Bạn có thể làm tương tự trong một dòng: 'Files.copy (stream, new File (" C: \\ Test.jpg "). ToPath());' – Jesper