我可以将任何 InputStream 写入 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(...) 的第一个参数请求一个 ReadableByteChannel 对象。由于我使用 InputStream 作为输入,因此它没有 inputStream.getChannel() 方法来创建所需的通道。
有什么方法可以从 InputStream 中获取 ReadableByteChannel 吗?