C#中的StreamReader和缓冲区

gra*_*tar 8 c# streaming buffer buffering streamreader

我对StreamReader的缓冲区使用有疑问.在这里:http://msdn.microsoft.com/en-us/library/system.io.streamreader.aspx你可以看到:

"当从Stream读取时,使用与流的内部缓冲区大小相同的缓冲区会更有效."

根据这个博客,StreamReader的内部缓冲区大小是2k,所以我可以使用Read()避免来有效地读取一些kbs的文件Read(Char[], Int32, Int32).

而且,即使文件很大,我也可以构造StreamReader传递缓冲区的大小

那么外部缓冲区的需求是什么?

gar*_*nti 1

我认为这个问题已经在 stackoverflow 上以不同的方式被问到了:How to write the content of onestream into anotherstream in .net?

“使用 Read 方法时,使用与流的内部缓冲区大小相同的缓冲区会更有效,其中内部缓冲区设置为所需的块大小,并且始终读取小于块大小的数据。如果在构造流时未指定内部缓冲区的大小,则其默认大小为 4 KB(4096 字节)。”