Я использую RandomAccessFile для выполнения некоторых операций записи в файл как часть транзакции. Прежде чем совершить транзакцию, я хочу быть абсолютно уверенным, что данные записываются на диск. Вызов force(boolean)
на RAF FileChannel
, как представляется, предоставляет эту гарантию, но называется ли он неявным, когда я закрываю файл, или мне нужно называть его вручную?Производит ли RandomAccessFile.close() внутреннее вызов FileChannel.force()?
Кроме того, имеет ли кто-нибудь представление о том, что на самом деле делает force()
, и насколько ему можно доверять? Возможно ли, что ОС может сообщить, что данные были записаны на диск, когда на самом деле он все еще находится в каком-то кеше? В какой степени это зависит от ОС/HDD/файловой системы?