14

RandomAccessFileコンストラクターは、modeファイルを開く方法を指定する文字列を受け入れます。

"rws""rwd"モードの違いについて混乱しています。

ドキュメントの状態は次のとおりです。

「rws」は「rw」と同様に読み取りと書き込み用に開きます。また、ファイルのコンテンツまたはメタデータへのすべての更新が、基盤となるストレージデバイスに同期して書き込まれる必要があります。

「rwd」は「rw」と同様に読み取りと書き込み用に開きます。また、ファイルのコンテンツに対するすべての更新が、基盤となるストレージデバイスに同期して書き込まれる必要があります。

[...]

「rwd」モードを使用すると、実行されるI/O操作の数を減らすことができます。「rwd」を使用するには、ファイルのコンテンツを更新してストレージに書き込むだけです。「rws」を使用するには、ファイルのコンテンツとそのメタデータの両方を更新する必要があります。これには、通常、少なくとももう1つの低レベルのI/O操作が必要です。

metadata...そしてその意味についての説明はありません。これは、ファイルシステムで最後に変更されたタイムスタンプ"rws"を更新することを意味しますか?"rwd"

4

2 に答える 2

18

「rws」はファイルシステムの最後に変更されたタイムスタンプを更新し、「rwd」は更新しないという意味ですか?

rwsは、ファイルの内容とファイルの変更日をフラッシュします。

rwdはファイルの内容をフラッシュしますが、ファイルが閉じられるまで変更日が変更されない場合があります。

rwは、指示した場合にのみフラッシュし、ファイルを閉じるまで変更日を変更しません。

ところで、rwdはrwよりも書き込みがはるかに遅く、rwsもまた遅くなります。

于 2013-01-09T10:04:27.203 に答える
3

FileChannelAPIのファイルメタデータに関する情報がありますhttp://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html

...The file may also have some associated metadata such as access permissions, content type, and last-modification time...

さらに、FileChannel.force(boolean metadata)APIはrwsとrwdの違いに関する詳細情報を提供します(名前は言及されていませんが)

于 2013-01-09T10:20:10.260 に答える