Ответ 1
Ah, когда документация не удалась, декомпилируйте. Я всегда забываю об этом!
Ну, не делай этого. Больше не нужно, вы можете посмотреть на исходный код, написанный программистами Microsoft. Всегда лучше, чем декомпилированный код, он имеет комментарии.
Посетите веб-сайт Reference Source. Он был обновлен примерно год назад, теперь он имеет очень гладкий интерфейс браузера, который на самом деле быстрее, чем декомпилятор. Просто введите 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 символа. И если вы пишете файл вместо потока, то есть FileStream с 4096-байтным буфером, это не может изменить. Это вызывает классическую проблему с комментариями, у них есть умение не поддерживать и несовпадать с кодом. Наделение на "адаптивную буферизацию" фактически не реализовано. KiB - это животное с 1024 пальцами ног, а не 1000.