2015-08-28 76 views
1

我发现,有在使用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相关的文件中(而不是将其放入内部缓冲区)?

谢谢!

+1

你是问,如果你可以用'FileStream'不带缓冲?我没有看到这一点,你仍然需要处理FileStream类。 –

+1

你总是可以调用'Flush',尽管你不会用这种方式绕过缓冲区(而且我没有看到没有一个这样做的想法。 –

+1

好的,我明白了。谢谢:)无论如何,我猜Flush是我在这种情况下寻找的。 –

回答

0

综上所述这个问题,因为没有官方的回答,这里就是我一直在寻找的是Flush()方法。它节省了实际缓冲区使用FileStream相关的文件,它是我需要:)

3

有可以传递给FileStream构造一个标志枚举FileOptions.WriteThrough值。它指示文件流直接写入底层数据存储,而不进行任何缓冲。

+0

这是一个不错的选择,但现在它就像缓冲区是完全不需要的,对吧?我的意思是,现在它不会被使用。 –

+1

是的,在应用此枚举值的情况下,不存在缓冲区。 –

+0

那么使用它有什么意义?我的意思是我可以创建FileStream既不缓冲也不提及FileOption。 –