Мне нравится объяснение Джеспера в неспециалистических терминах
. Импровизируя примеры из ответа Йеспера,
class House {
// blue print for House Objects
}
class Car {
// blue print for Instances of Class Car
}
House myHouse = House new();
Car myCar = Car new();
myHouse и myCar являются объектами
myHouse - это экземпляр of House (связывает Object-myHouse с его классом) myCar является экземпляром Car
коротким
«myHouse - это экземпляр класса House», который аналогичен сказанному « myHouse - это объект типа House "
В соответствии с Windows, посмотрите FlushFileBuffers (Win32 API).
Ну, Вы могли закрыть файл..., который, вероятно, сделает это. В действительности, с абстракцией HAL, виртуализацией и дисковыми аппаратными средствами, теперь имеющими больше вычислительной мощности и кэш-памяти, чем , который компьютеры сделали несколько лет назад, Вы оказываетесь перед необходимостью жить с надеждой, что диск делает свое задание.
транзакционная файловая система, никогда действительно осуществленная;-p, Конечно, Вы могли, возможно, посмотреть на использование базы данных как бэкэнд и использовать систему транзакции этого?
В стороне: обратите внимание, что не все потоки даже гарантируют Flush()
- например, GZipStream
и т.д. сохраняют рабочий буфер незафиксированных данных даже после сброса - единственный способ заставить это сбрасывать , все к Close()
это.
Существует просто слишком много уровней абстракции, чтобы быть абсолютно уверенными, что данные записаны в диск, право вниз на аппаратный уровень.
Не блестяще производительный или надежный, но как насчет того, чтобы вновь открыть файл, после того как это записано в отдельном процессе и проверке размера или содержания?