Java: RandomAccessFile Mode "rws" vs "rwd"?
Конструктор RandomAccessFile
принимает строку mode
, определяющую способ открытия файла.
Я смущен различием между режимами "rws"
и "rwd"
.
Здесь что docs:
"rws" Открыт для чтения и записи, как и для "rw", а также требует что каждое обновление содержимого файла или метаданных должно быть записано синхронно с основным запоминающим устройством.
"rwd" Открыт для чтения и записи, как и для "rw", а также требует что каждое обновление содержимого файла должно быть записано синхронно с основное запоминающее устройство.
[...]
Режим "rwd" может использоваться для уменьшения количества операций ввода-вывода выполнено. Использование "rwd" требует только обновления содержимого файла для записываться на хранение; использование "rws" требует обновлений как файлов контента и его метаданных, которые должны быть написаны, что обычно требует менее одной операции ввода-вывода низкого уровня.
... и никаких объяснений о том, что означает metadata
. Означает ли это, что "rws"
обновляет последнюю измененную временную метку в файловой системе, а "rwd"
- нет?
Ответы
Ответ 1
Означает ли это, что "rws" обновляет последнюю измененную временную метку в файловой системе, а "rwd" - нет?
rws очищает содержимое файла и дату изменения файла.
rwd очищает содержимое файла, но дата изменения может не измениться, пока файл не будет закрыт.
rw только сбрасывается, когда вы указываете его, и не меняете дату модификации, пока вы не закроете файл.
BTW rwd намного медленнее для записи, чем rw, а rws медленнее.
Ответ 2
В 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 (хотя имена никогда не упоминаются)