FileStream и его стратегия буферизации
Я обнаружил, что нет смысла использовать BufferedStream вместе с FileStream, поскольку у него есть своя собственная стратегия буферизации. И все же мне было интересно одно:
FileStream fsWithBuffer = new FileStream("buf.dat", FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.None, 255);
fsWithBuffer.WriteByte((byte)4);
fsWithBuffer.Dispose();
Эти коды записывают одну порцию байта в указанный файл. Перед этим этот байт хранится во внутреннем буфере, поэтому я понимаю, что если бы я не вызывал метод Dispose(), в файл ничего не было бы записано.
Теперь мой вопрос: иногда мы не хотим помещать все данные в буфер FileStream, скажем, это предназначено только для небольших записей. Есть ли возможность поместить некоторые данные непосредственно в файл, связанный с FileStream (не помещая его ранее во внутренний буфер)?
Спасибо!
2 ответа
Подводя итог этому вопросу, поскольку официального ответа не было, здесь я искал Flush()
метод. Он сохраняет фактический буфер в файл, связанный с FileStream, и это было то, что мне нужно:)
Есть флаг Enum FileOptions.WriteThrough
значение, которое может быть передано FileStream
конструктор. Он инструктирует файловый поток напрямую записывать в базовое хранилище данных без какой-либо буферизации.