Подтвердить что ты не робот

Java: RandomAccessFile Mode "rws" vs "rwd"?

Конструктор RandomAccessFile принимает строку mode, определяющую способ открытия файла.

Я смущен различием между режимами "rws" и "rwd".

Здесь что docs:

"rws" Открыт для чтения и записи, как и для "rw", а также требует что каждое обновление содержимого файла или метаданных должно быть записано синхронно с основным запоминающим устройством.

"rwd" Открыт для чтения и записи, как и для "rw", а также требует что каждое обновление содержимого файла должно быть записано синхронно с основное запоминающее устройство.

[...]

Режим "rwd" может использоваться для уменьшения количества операций ввода-вывода выполнено. Использование "rwd" требует только обновления содержимого файла для записываться на хранение; использование "rws" требует обновлений как файлов контента и его метаданных, которые должны быть написаны, что обычно требует менее одной операции ввода-вывода низкого уровня.

... и никаких объяснений о том, что означает metadata. Означает ли это, что "rws" обновляет последнюю измененную временную метку в файловой системе, а "rwd" - нет?

4b9b3361

Ответ 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 (хотя имена никогда не упоминаются)