BufferedStream - 尝试在文件开头

时间:2016-05-17 14:33:10

标签: c# file exception io .net-4.6

我正在打开一个非常小的文件(大约200 kb),然后我在BufferedStream中打开它,因为我将多次阅读它。当我尝试创建BufferedStream时,我得到一个IOException:

var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true);
using (var bfs = new BufferedStream(stream)); // IOException: An attempt was made to move the file pointer before the beginning of the file.

可能导致IO异常的原因是什么?我的应用程序使用的是.NET 4.6

1 个答案:

答案 0 :(得分:1)

这并不是专门回答您的问题,但您不需要使用BufferedStream。缓冲已经编入FileStream

请参阅https://blogs.msdn.microsoft.com/brada/2004/04/15/filestream-and-bufferedstream/

特别值得注意的是:

  

回答(来自Brian Grunkemeyer,dev为System.IO命名空间):

     

不,围绕FileStream包装BufferedStream没有任何好处。我们大约4年前将BufferedStream的缓冲逻辑复制到FileStream中,以鼓励更好的默认性能(Pit of Success)。实际上,我不认为.NET Framework中有任何Streams需要它,但如果默认情况下它们不进行缓冲,则可能需要自定义Stream实现。