Ini adalah yang lama, tetapi saya ingin melakukan sesuatu yang serupa hari ini dan menemukan bahwa semuanya telah berubah. Sejak .net 4.5, ada leaveOpenargumen:
public StreamReader( Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize, bool leaveOpen )
Satu-satunya masalah adalah bahwa tidak sepenuhnya jelas apa yang harus ditetapkan untuk parameter lainnya. Berikut ini beberapa bantuan:
Dari halaman msdn untuk StreamReader Constructor (Stream):
Konstruktor ini menginisialisasi pengodean ke UTF8Encoding, properti BaseStream menggunakan parameter stream, dan ukuran buffer internal hingga 1024 byte.
Itu hanya daun detectEncodingFromByteOrderMarksyang menilai oleh kode sumber adalahtrue
public StreamReader(Stream stream)
: this(stream, true) {
}
public StreamReader(Stream stream, bool detectEncodingFromByteOrderMarks)
: this(stream, Encoding.UTF8, detectEncodingFromByteOrderMarks, DefaultBufferSize) {
}
Akan lebih baik jika beberapa dari default itu diekspos atau jika argumennya opsional sehingga kita bisa menentukan yang kita inginkan.