2011-07-08 32 views
6

Tôi có thể viết bất kỳ InputStream nào vào một FileChannel không?Sử dụng FileChannel để viết bất kỳ InputStream nào?

Tôi đang sử dụng java.nio.channels.FileChannel để mở tệp và khóa tệp, sau đó viết InputStream vào tệp đầu ra. InputStream có thể được mở bằng một tệp khác, URL, socket hoặc bất kỳ thứ gì. Tôi đã viết các mã sau:

FileOutputStream outputStream = new FileOutputStream(outputFile); 
FileChannel outputChannel = outputStream.getChannel(); 
FileLock lock = outputChannel.lock(); 
try { 
    outputChannel.transferFrom(???); 
} finally { 
    lock.release(); 
    outputChannel.close(); 
    outputStream.close(); 
} 

Tuy nhiên, đối số đầu tiên của outputChannel.transferTừ (...) yêu cầu đối tượng ReadableByteChannel. Vì tôi sử dụng InputStream làm đầu vào, nó không có phương thức inputStream.getChannel() để tạo kênh cần thiết.

Có cách nào để nhận một ReadableByteChannel từ InputStream không?

Trả lời

5

Bạn có thể sử dụng ReadableByteChannel readableChannel = Channels.newChannel (myinputstream).

Các vấn đề liên quan