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 конструктор. Он инструктирует файловый поток напрямую записывать в базовое хранилище данных без какой-либо буферизации.

Другие вопросы по тегам