Это старый, но я хотел сделать что-то подобное сегодня и обнаружил, что все изменилось. Начиная с .net 4.5, есть leaveOpen
аргумент:
public StreamReader( Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize, bool leaveOpen )
Единственная проблема заключается в том, что не совсем очевидно, что устанавливать для других параметров. Вот некоторая помощь:
Со страницы msdn для Конструктора StreamReader (Stream):
Этот конструктор инициализирует кодирование для UTF8Encoding, свойство BaseStream с использованием параметра stream и размер внутреннего буфера до 1024 байтов.
Это просто оставляет detectEncodingFromByteOrderMarks
который судя по исходный код являетсяtrue
public StreamReader(Stream stream)
: this(stream, true) {
}
public StreamReader(Stream stream, bool detectEncodingFromByteOrderMarks)
: this(stream, Encoding.UTF8, detectEncodingFromByteOrderMarks, DefaultBufferSize) {
}
Было бы хорошо, если бы были выставлены некоторые из этих значений по умолчанию или если аргументы были необязательными, чтобы мы могли просто указать те, которые нам нужны.