13

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を取得する方法はありますか?

4

2 に答える 2

28
Channels.newChannel(InputStream in)

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

于 2011-07-08T02:59:24.080 に答える
9

ReadableByteChannel readableChannel = Channels.newChannel(myinputstream)を使用できます。

于 2011-07-08T03:04:12.653 に答える