.net StreamWriter的默认缓冲区大小是多少

.net StreamWriter的默认缓冲区大小是多少,.net,streamwriter,.net,Streamwriter,对于公共StreamWriter(Stream-Stream)构造函数,表示 为指定对象初始化StreamWriter类的新实例 使用UTF-8编码和默认缓冲区大小进行流 我想使用另一个构造函数重载,但希望使用默认的缓冲区大小。默认缓冲区大小是多少?MSDN没有说任何地方。答案是“4kib”(不管这是什么意思……我猜是KB?),但并没有任何联系来证实这一点 啊,当文档失败时,反编译。我总是忘了 好吧,别那么做。不再需要了,您可以查看Microsoft程序员编写的实际源代码。总比反编译代码好,它有

对于
公共StreamWriter(Stream-Stream)
构造函数,表示

为指定对象初始化StreamWriter类的新实例 使用UTF-8编码和默认缓冲区大小进行流

我想使用另一个构造函数重载,但希望使用默认的缓冲区大小。默认缓冲区大小是多少?MSDN没有说任何地方。答案是“4kib”(不管这是什么意思……我猜是KB?),但并没有任何联系来证实这一点


啊,当文档失败时,反编译。我总是忘了

好吧,别那么做。不再需要了,您可以查看Microsoft程序员编写的实际源代码。总比反编译代码好,它有注释

访问该网站。它大约在一年前更新过,现在它有一个非常光滑的浏览器界面,实际上比反编译器快。只需在搜索框中键入StreamWriter。您最多需要十几秒钟才能发现:

    // For UTF-8, the values of 1K for the default buffer size and 4K for the
    // file stream buffer size are reasonable & give very reasonable
    // performance for in terms of construction time for the StreamWriter and
    // write perf.  Note that for UTF-8, we end up allocating a 4K byte buffer,
    // which means we take advantage of adaptive buffering code.
    // The performance using UnicodeEncoding is acceptable.  
    internal const int DefaultBufferSize = 1024;   // char[]
    private const int DefaultFileStreamBufferSize = 4096;

因此StreamWriter的默认值是1024个字符。如果您写入文件而不是流,那么就有一个具有4096字节缓冲区的文件流,无法更改。它确实暴露了注释的一个经典问题,它们有不被维护和代码不匹配的诀窍。关于“自适应缓冲”的胡说八道实际上并没有实现。KiB是有1024个脚趾的动物,而不是1000个。

建议默认缓冲区大小为1024字节。啊,当文档失败时,反编译。我总是忘了!谢谢:)@SriramSakthivel——谢谢你@roryap:1KB=1024B(与1KB相反,1KB可能意味着1000B或1024B)。请参阅。重新设置4096字节的文件缓冲区。如果使用正确的FileStream构造函数,则可以更改此设置。然后,您可以将该FileStream传递给StreamWriter构造函数。我还没有测试是否有必要将较大的缓冲区大小传递给两个构造函数(StreamWriter和FileStream),或者是否足以将其传递给FileStream构造函数。但我看不出把同样大的尺寸传给两个人有什么害处。