FileStream 及其缓冲策略
FileStream and it's buffering strategy
我发现将 BufferedStream 与 FileStream 结合使用没有意义,因为它有自己的缓冲策略。然而,我想知道一件事:
FileStream fsWithBuffer = new FileStream("buf.dat", FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.None, 255);
fsWithBuffer.WriteByte((byte)4);
fsWithBuffer.Dispose();
这段代码将字节的一部分写入指定的文件。在此之前,这个字节保存在内部缓冲区中,所以我知道如果我不调用 Dispose() 方法,则不会向文件写入任何内容。
现在,我的问题是:有时我们不想将所有数据都放在 FileStream 的缓冲区中,假设它只用于小写操作。是否可以将一些数据直接放入与 FileStream 关联的文件中(而不是提前放入内部缓冲区)?
谢谢!
有一个 Flag Enum FileOptions.WriteThrough
值可以传递给 FileStream
构造函数。它指示文件流直接写入底层数据存储而无需任何缓冲。
总结一下这个问题,官方没有给出答案,我这里找的是Flush()
方法。它将实际缓冲区保存到与 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 关联的文件中(而不是提前放入内部缓冲区)?
谢谢!
有一个 Flag Enum FileOptions.WriteThrough
值可以传递给 FileStream
构造函数。它指示文件流直接写入底层数据存储而无需任何缓冲。
总结一下这个问题,官方没有给出答案,我这里找的是Flush()
方法。它将实际缓冲区保存到与 FileStream 关联的文件中,这是我需要的:)