14

RandomAccessFile构造函数接受一个mode指定文件应该如何打开的字符串。

我对"rws""rwd"模式之间的区别感到困惑。

这是文档状态:

"rws" 与 "rw" 一样,为读取和写入而打开,并且还要求对文件内容或元数据的每次更新都同步写入底层存储设备。

"rwd" 像 "rw" 一样打开读写,并且还要求对文件内容的每次更新都同步写入底层存储设备。

[...]

“rwd”模式可用于减少执行的 I/O 操作的数量。使用“rwd”只需要更新要写入存储的文件内容;使用“rws”需要更新文件的内容和要写入的元数据,这通常需要至少一个低级 I/O 操作。

...并且没有解释是什么metadata意思。这是否意味着"rws"更新文件系统上最后修改的时间戳,而"rwd"不是?

4

2 回答 2

18

这是否意味着“rws”会更新文件系统上最后修改的时间戳,而“rwd”不会?

rws 刷新文件的内容和文件的修改日期。

rwd 刷新文件的内容,但在文件关闭之前修改日期可能不会改变。

rw 仅在您告诉它时刷新,并且在您关闭文件之前不会更改修改日期。

顺便说一句,rwd 的写入速度比 rw 慢得多,而 rws 又慢了。

于 2013-01-09T10:04:27.203 回答
3

FileChannel API 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 回答