我正在打开一个非常小的文件(大约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
答案 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实现。