19

私はに書き込むInputStreamために次の方法を使用していますFile:

private void writeToFile(InputStream stream) throws IOException {
    String filePath = "C:\\Test.jpg";
    FileChannel outChannel = new FileOutputStream(filePath).getChannel();       
    ReadableByteChannel inChannel = Channels.newChannel(stream);
    ByteBuffer buffer = ByteBuffer.allocate(1024);
    
    while(true) {
        if(inChannel.read(buffer) == -1) {
            break;
        }
        
        buffer.flip();
        outChannel.write(buffer);
        buffer.clear();
    }
    
    inChannel.close();
    outChannel.close();
}

これがNIOを使用する正しい方法であるかどうか疑問に思っていました。FileChannel.transferFrom私は3つのパラメータを取るmethod を読みました:

  1. ReadableByteChannel src
  2. ロングポジション
  3. ロングカウント

私の場合src、 しかありません。positionandcountはありません。この方法を使用してファイルを作成する方法はありますか?

InputStreamまた、イメージの場合、NIOのみからイメージを作成するより良い方法はありますか?

どんな情報も私にとって非常に役に立ちます。SOには同様の質問がありますが、私の場合に適した特定の解決策が見つかりません。

4

2 に答える 2