1

我发现将 BufferedStream 与 FileStream 结合使用是没有意义的,因为它有自己的缓冲策略。然而,我想知道一件事:

FileStream fsWithBuffer = new FileStream("buf.dat", FileMode.OpenOrCreate,
                FileAccess.ReadWrite, FileShare.None, 255);
            fsWithBuffer.WriteByte((byte)4);
            fsWithBuffer.Dispose();

此代码将一部分字节写入指定文件。在此之前,这个字节保存在内部缓冲区中,所以我知道如果我不调用 Dispose() 方法,则不会将任何内容写入文件。

现在,我的问题是:有时我们不想将所有数据放在 FileStream 的缓冲区中,假设它仅用于小写入。是否有可能将一些数据直接放入与 FileStream 关​​联的文件中(而不是将其更早放入内部缓冲区)?

谢谢!

4

2 回答 2

3

有一个FileOptions.WriteThrough可以传递给FileStream构造函数的 Flag Enum 值。它指示文件流直接写入底层数据存储而无需任何缓冲。

于 2015-08-28T08:35:55.280 回答
1

总结这个问题,由于没有官方答案,我在这里寻找的是Flush()方法。它将实际缓冲区保存到与 FileStream 关​​联的文件中,这是我需要的:)

于 2015-12-05T20:31:02.860 回答