使用 FileChannel 编写任何 InputStream?

2022-09-04 05:50:29

我可以将任何输入流写入文件通道吗?

我使用java.nio.channels.FileChannel打开一个文件并锁定它,然后将一个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(...) 的第一个参数请求一个 ReadableByteChannel 对象。由于我使用 InputStream 作为输入,因此它没有 inputStream.getChannel() 方法来创建所需的通道。

有没有办法从输入流中获取可读字节通道?


答案 2

您可以使用ReadableByteChannel readableChannel = Channels.newChannel(myinputstream)。


推荐