使用FileChannel写入任何输入流



我可以将任何输入流写入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)。

相关内容

  • 没有找到相关文章

最新更新