4

メソッドはどのようなFileChannelオブジェクトをFileChannel.open(path)返しますか?

以下のようにランダム アクセスが許可されますか?

RandomAccessFile ra = new RandomAccessFile("RandomIndeed","rw");
    FileChannel fc1 = ra.getChannel();

fc1と次のインスタンスの違いは何ですかfc:

FileChannel fc = FileChannel.open(path);

基本的に、上記で作成した 2 つのオブジェクトの違いを知りたいのでfc1fc

前もって感謝します。

4

1 に答える 1

2

FileChannelインスタンスから取得したインスタンスRandomAccessFileは、作成されたオブジェクトのランダム アクセス動作を保持します。この場合、オブジェクトfc1と同期されraます。javadoc で説明されていることがわかります

明示的に、またはバイトの読み取りまたは書き込みによってチャネルの位置を変更すると、元のオブジェクトのファイル位置が変更され、その逆も同様です。ファイル チャネルを介してファイルの長さを変更すると、元のオブジェクトを介して表示される長さが変更され、その逆も同様です。バイトを書き込んでファイルの内容を変更すると、元のオブジェクトから見える内容が変更され、その逆も同様です。

ただし、FileChannelwhich is を使用して作成されたインスタンスには、この動作FileChannel.open()fcありません。FileChannelこれは、Streams から取得したインスタンスに当てはまります。同じプログラムによって作成されたオブジェクト間でファイルのビューが一貫していることを保証するだけです。これがお役に立てば幸いです。

于 2013-05-09T15:46:49.063 に答える