Доброго вечера!
Кто-нибудь может объяснить по проще что делает этот метод FileStream.Flush()?
Ну он типа очищает данные из буфера и пишет их на диск, а какие именно данные он очищает?
Данные которые я хочу писать обычно находятся в массиве байтов, а в FileStream они попадают только когда я вызываю метод Write, не пойму что он там очищает.
И главное куда он их записывает? В документации указано что на диск, но блен, а куда именно в какой файл?
Извините, но пример который есть на msdn какой-то перегруженный, нифига не понятно.
Когда вы пишете в файловый поток (т.е. делаете Write) - данные не сразу попадают в файловую систему (тобишь в тот файл который вы указали в создании потока). Flush собственно говорит "я закончил, можно записать все это на жесткий". Очищает собственно он именно те внутренние ресурсы-буферы, в которых хранились данные между write и ФС. Это все скрыто от программиста и по факту в том то и смысл фреймворка - вам не надо об этом думать.
rPman, буфферов там вагон по пути. Если я правильно понял - с true запись произойдет физически на диск сразу. С false - физически еще не произойдет (точнее не факт что произойдет) - но произойдет в ближайшее время.
Грубо говоря:
- если не сделать flush и вырубить программу\комп (из розетки) - то скорее всего часть данных не запишется
- если сделать flush с false - то при вырубании проги запись все равно произойдет, а при вырубании компа - уже не факт
- если сделать flush с true - то по идее при вырубыании даже компа сразу после flush (ну ладно с некоторым запасом на сами дисковые операции) все будет ок.
Еще раз - это все приблизительно и не сильно критично если вы не пишете что то типа СУБД
я то как раз понимаю что там буферов много
просто грустно что это так плохо понятно описано в документации
гадание и разработка надежных приложений - не совместимы
ни одними базами данных заморачивается люд, например, если писать текст не в файл а в консоль, то буферизация может обломить вывод текущего прогресса, когда строка перезаписывается (\r - курсор в начало строки) новым текущим прогрессом.