14 protected override void Dispose(
bool disposing)
123 : this(
stream, detectEncodingFromByteOrderMarks: true)
128 : this(
stream,
Encoding.UTF8, detectEncodingFromByteOrderMarks, 1024, leaveOpen: false)
133 : this(
stream, encoding, detectEncodingFromByteOrderMarks: true, 1024, leaveOpen: false)
138 : this(
stream, encoding, detectEncodingFromByteOrderMarks, 1024, leaveOpen: false)
143 : this(
stream, encoding, detectEncodingFromByteOrderMarks, bufferSize, leaveOpen: false)
153 if (encoding ==
null)
161 if (bufferSize == -1)
165 else if (bufferSize <= 0)
172 if (bufferSize < 128)
185 : this(path, detectEncodingFromByteOrderMarks: true)
189 public StreamReader(
string path,
bool detectEncodingFromByteOrderMarks)
190 : this(path,
Encoding.UTF8, detectEncodingFromByteOrderMarks, 1024)
195 : this(path, encoding, detectEncodingFromByteOrderMarks: true, 1024)
200 : this(path, encoding, detectEncodingFromByteOrderMarks, 1024)
205 : this(
ValidateArgsAndOpenPath(path, encoding, bufferSize), encoding, detectEncodingFromByteOrderMarks, bufferSize, leaveOpen: false)
210 : this(path,
Encoding.UTF8, detectEncodingFromByteOrderMarks: true,
options)
249 if (encoding ==
null)
253 if (path.Length == 0)
264 protected override void Dispose(
bool disposing)
286 base.Dispose(disposing);
358 bool readToUserBuffer =
false;
375 if (!readToUserBuffer)
428 return base.ReadBlock(
buffer);
437 while (num2 > 0 && num <
buffer.Length);
599 if (readToUserBuffer)
631 if (readToUserBuffer)
663 if (c ==
'\r' || c ==
'\n')
666 if (stringBuilder !=
null)
686 if (stringBuilder ==
null)
700 return base.ReadLineAsync();
728 char c = charBuffer[num];
729 if (c ==
'\r' || c ==
'\n')
734 sb.
Append(charBuffer, charPos, num - charPos);
739 s =
new string(charBuffer, charPos, num - charPos);
742 bool flag3 = c ==
'\r';
746 bool flag5 = charPos < charLen;
766 while (num < charLen);
767 num = charLen - charPos;
772 sb.
Append(charBuffer, charPos, num);
782 return base.ReadToEndAsync();
854 bool readToUserBuffer =
false;
880 if (readToUserBuffer)
914 if (readToUserBuffer)
936 if (!readToUserBuffer)
1048 ThrowObjectDisposedException();
1050 void ThrowObjectDisposedException()
static void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count)
override string ReadToEnd()
override Encoding CurrentEncoding
override int Read(char[] buffer, int index, int count)
override int ReadBuffer()
override string ReadLine()
override void Dispose(bool disposing)
StreamReader(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, FileStreamOptions options)
void CompressBuffer(int n)
static Stream ValidateArgsAndOpenPath(string path, Encoding encoding, FileStreamOptions options)
async ValueTask< int > ReadBufferAsync(CancellationToken cancellationToken)
override ValueTask< int > ReadBlockAsync(Memory< char > buffer, CancellationToken cancellationToken=default(CancellationToken))
StreamReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize)
override int ReadBlock(char[] buffer, int index, int count)
static void ValidateArgs(string path, Encoding encoding)
override int ReadBlock(Span< char > buffer)
override void Dispose(bool disposing)
virtual Encoding CurrentEncoding
virtual Stream BaseStream
override Task< int > ReadAsync(char[] buffer, int index, int count)
override string ReadToEnd()
StreamReader(string path)
override async ValueTask< int > ReadAsyncInternal(Memory< char > buffer, CancellationToken cancellationToken)
int ReadSpan(Span< char > buffer)
async Task< string > ReadToEndAsyncInternal()
async Task< string > ReadLineAsyncInternal()
StreamReader(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize)
StreamReader(Stream stream, bool detectEncodingFromByteOrderMarks)
override int Read(char[] buffer, int index, int count)
override int Read(Span< char > buffer)
void CheckAsyncTaskInProgress()
StreamReader(string path, FileStreamOptions options)
int ReadBuffer(Span< char > userBuffer, out bool readToUserBuffer)
StreamReader(Stream stream, Encoding encoding)
override Task< string?> ReadLineAsync()
static new readonly StreamReader Null
StreamReader(Stream stream)
static void ThrowAsyncIOInProgress()
StreamReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks)
override? string ReadLine()
override Task< int > ReadBlockAsync(char[] buffer, int index, int count)
readonly byte[] _byteBuffer
override ValueTask< int > ReadAsync(Memory< char > buffer, CancellationToken cancellationToken=default(CancellationToken))
override Task< string > ReadToEndAsync()
static Stream ValidateArgsAndOpenPath(string path, Encoding encoding, int bufferSize)
void DiscardBufferedData()
StreamReader(string path, bool detectEncodingFromByteOrderMarks)
StreamReader(string path, Encoding encoding)
StreamReader(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks)
StreamReader(Stream stream, Encoding? encoding=null, bool detectEncodingFromByteOrderMarks=true, int bufferSize=-1, bool leaveOpen=false)
int Read(byte[] buffer, int offset, int count)
Task< int > ReadAsync(byte[] buffer, int offset, int count)
static readonly Stream Null
async ValueTask< int > ReadBlockAsyncInternal(Memory< char > buffer, CancellationToken cancellationToken)
static string ArgumentOutOfRange_NeedPosNum
static string ObjectDisposed_ReaderClosed
static string Argument_StreamNotReadable
static string Argument_EmptyPath
static string ArgumentNull_Buffer
static string Argument_InvalidOffLen
static string ArgumentOutOfRange_NeedNonNegNum
static string InvalidOperation_AsyncIOInProgress
int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
static Encoding BigEndianUnicode
virtual ReadOnlySpan< byte > Preamble
int GetMaxCharCount(int byteCount)
virtual Decoder GetDecoder()
override string ToString()
StringBuilder Append(char value, int repeatCount)
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
static Task CompletedTask
static void ThrowArgumentNullException(string name)
ReadOnlySpan< T > Slice(int start)
void CopyTo(Span< T > destination)
Span< T > Slice(int start)
static CancellationToken None
static ValueTask FromCanceled(CancellationToken cancellationToken)
bool IsCompletedSuccessfully
ConfiguredValueTaskAwaitable ConfigureAwait(bool continueOnCapturedContext)