RandomAccessFile пишет асинхронно? - PullRequest
2 голосов
/ 01 октября 2011

Глядя на конструктор RandomAccessFile для режима, в котором написано 'rws' The file is opened for reading and writing. Every change of the file's content or metadata must be written synchronously to the target device.

Означает ли это, что режим 'rw' является асинхронным?Нужно ли включать 's', если мне нужно знать, когда запись файла завершена?

Ответы [ 2 ]

5 голосов
/ 01 октября 2011

Является ли запись RandomAccessFile асинхронной?

Синхронное / асинхронное различие относится к гарантии того, что данные / метаданные были благополучно сохранены на диске до возврата вызова write.Без гарантии синхронного режима возможно, что записанные вами данные могут все еще находиться в памяти только в момент завершения системного вызова write.(Данные будут записаны на диск в конце концов ... обычно в течение нескольких секунд ... если операционная система не выйдет из строя или машина не умрет из-за сбоя питания или чего-то подобного.)

Вывод в синхронном режиме - (очевидно) медленнее, чем вывод в асинхронном режиме.

Означает ли это, что режим 'rw' является асинхронным?

Да, именно так, как указано выше.

Нужно ли включать 's', если мне нужно знать, когда запись файла завершена?

Да, если под "завершить" вы имеете в виду "записано на диск".

3 голосов
/ 01 октября 2011

Это верно для RandomAccessFile и классов java.io при использовании нескольких потоков.Режим «rw» предлагает асинхронное чтение / запись, но вы можете использовать режим synchronous для операций чтения и записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...