Какие режимы доступа к файлу есть у RandomAccessFile?
Конструктор RandomAccessFile требует второй аргумент — строку, определяющую режим доступа к файлу.
| Режим | Описание |
|---|---|
"r" |
Только чтение. Любые методы записи выбрасывают IOException |
"rw" |
Чтение и запись. Если файл не существует, создаётся новый |
"rws" |
Чтение и запись с синхронной записью содержимого и метаданных на диск при каждом изменении |
"rwd" |
Чтение и запись с синхронной записью содержимого на диск. Метаданные могут записываться асинхронно |
Режимы "rws" и "rwd" обеспечивают гарантию записи на физический носитель (аналог fsync), что важно для систем, где потеря данных при сбое недопустима. Режим "rwd" менее строгий и более производительный, чем "rws", поскольку не требует синхронной записи метаданных (время модификации, размер файла).
На практике чаще всего используется "r" для чтения и "rw" для чтения/записи. Режимы "rws" и "rwd" применяются в приложениях с повышенными требованиями к надёжности — базах данных, журналах транзакций, системах хранения.
На собеседовании: назовите все четыре режима. Ключевое — разница между
"rw","rws"и"rwd"в гарантиях записи на диск."rws"синхронизирует и данные, и метаданные;"rwd"— только данные.