编程语言
首页 > 编程语言> > java – 使用FileChannel编写任何InputStream?

java – 使用FileChannel编写任何InputStream?

作者:互联网

我可以将任何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?

解决方法:

Channels.newChannel(InputStream in)

http://docs.oracle.com/javase/7/docs/api/java/nio/channels/Channels.html

标签:filechannel,filelock,java,inputstream
来源: https://codeday.me/bug/20191005/1857713.html