我可以将任何输入流写入FileChannel吗?
我使用java.nio.channels.FileChannel打开文件并锁定它,然后将InputStream写入输出文件。InputStream可以由另一个文件、URL、套接字或任何东西打开。我写了以下代码:
FileOutputStream outputStream = new FileOutputStream(outputFile);
FileChannel outputChannel = outputStream.getChannel();
FileLock lock = outputChannel.lock();
try {
outputChannel.transferFrom(???);
} finally {
lock.release();
outputChannel.close();
outputStream.close();
}
但是,outputChannel.transferFrom(…)的第一个参数请求一个readablebychannel对象。因为我使用InputStream作为输入,所以它没有InputStream . getchannel()方法来创建所需的通道。
是否有办法从输入流中获得一个ReadableByteChannel ?
Channels.newChannel(InputStream in)
http://docs.oracle.com/javase/7/docs/api/java/nio/channels/Channels.html 您可以使用readablebychannel readableChannel = Channels.newChannel(myinputstream)。