Este es viejo, pero quería hacer algo similar hoy y descubrí que las cosas han cambiado. Desde .net 4.5, hay un leaveOpen
argumento:
public StreamReader( Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize, bool leaveOpen )
El único problema es que no es del todo obvio qué establecer para los otros parámetros. Aquí hay algo de ayuda:
Desde la página msdn para StreamReader Constructor (Stream):
Este constructor inicializa la codificación a UTF8Encoding, la propiedad BaseStream utilizando el parámetro de flujo y el tamaño del búfer interno a 1024 bytes.
Eso solo deja detectEncodingFromByteOrderMarks
que a juzgar por el código fuente estrue
public StreamReader(Stream stream)
: this(stream, true) {
}
public StreamReader(Stream stream, bool detectEncodingFromByteOrderMarks)
: this(stream, Encoding.UTF8, detectEncodingFromByteOrderMarks, DefaultBufferSize) {
}
Sería bueno si algunos de esos valores predeterminados estuvieran expuestos o si los argumentos fueran opcionales para que pudiéramos especificar los que queremos.