Содержимое
Программистам в своей повседневной практике часто приходится работать с файлами. Обычно, в .NET мы просто используем готовые обертки с дефолтными параметрами и даже не задумываемся о том, что в действительно параметров при работе с файлами достаточно много, а один из конструкторов класса FileStream открывает доступ ко многим из них. По моему опыту на всякого рода курсах теме работы с файлами в принципе не уделяют никакого внимания. К счастью, на хабре вышла новая статья, в которой описываются разные неочевидные нюансы при работе с файлами, которую я рекомендовал бы хотя бы просмотреть разработчикам, а особенно тем, кто окончил курсы программистов. Например, в статье рассказано о том, что зачастую после записи файла на диск в реальности данные могут физически быть записаны с небольшой задержкой. По этому поводу Oren Eini (создатель RavenDB) даже небольшую зарисовку сделал (в двух словах, если нужна надежность, в большинстве кейсов он рекомендует ограничиваться вызовом метода Flush). Кстати, у него там еще много постов на эту тему. Из любопытного, от себя добавлю, что метод FlushAsync не имеет перегрузки с параметром flushDisk, а его дефолтная реализация из OSFileStreamStrategy просто возвращаетTask.CompletedTask. So, be careful.