52 Flush(flushStream:
true, flushEncoder:
false);
81 : this(
stream, encoding, 1024, leaveOpen: false)
86 : this(
stream, encoding, bufferSize, leaveOpen: false)
105 if (bufferSize == -1)
109 else if (bufferSize <= 0)
116 if (bufferSize < 128)
130 : this(path, append: false,
UTF8NoBOM, 1024)
140 : this(path, append, encoding, 1024)
189 if (encoding ==
null)
193 if (path.Length == 0)
205 protected override void Dispose(
bool disposing)
212 Flush(flushStream:
true, flushEncoder:
true);
238 base.Dispose(disposing);
248 return base.DisposeAsync();
270 Flush(flushStream:
true, flushEncoder:
true);
273 private void Flush(
bool flushStream,
bool flushEncoder)
276 if (
_charPos == 0 && !flushStream && !flushEncoder)
317 Flush(flushStream:
false, flushEncoder:
false);
323 Flush(flushStream:
true, flushEncoder:
false);
374 for (
int i = 0; i <
buffer.Length; i++)
385 fixed (
char* ptr3 = &charBuffer[0])
392 if (num2 == charBuffer.Length)
394 Flush(flushStream:
false, flushEncoder:
false);
397 int num3 =
Math.
Min(charBuffer.Length - num2, num);
411 for (
int j = 0; j < coreNewLine.Length; j++)
415 Flush(flushStream:
false, flushEncoder:
false);
423 Flush(flushStream:
true, flushEncoder:
false);
480 public override void Write(
string format,
object? arg0,
object? arg1)
488 base.Write(
format, arg0, arg1);
492 public override void Write(
string format,
object? arg0,
object? arg1,
object? arg2)
500 base.Write(
format, arg0, arg1, arg2);
528 base.WriteLine(
format, arg0);
540 base.WriteLine(
format, arg0, arg1);
544 public override void WriteLine(
string format,
object? arg0,
object? arg1,
object? arg2)
552 base.WriteLine(
format, arg0, arg1, arg2);
568 base.WriteLine(
format, arg);
576 return base.WriteAsync(
value);
587 await
FlushAsyncInternal(flushStream:
false, flushEncoder:
false).ConfigureAwait(continueOnCapturedContext:
false);
596 await
FlushAsyncInternal(flushStream:
false, flushEncoder:
false).ConfigureAwait(continueOnCapturedContext:
false);
603 await
FlushAsyncInternal(flushStream:
true, flushEncoder:
false).ConfigureAwait(continueOnCapturedContext:
false);
611 return base.WriteAsync(
value);
667 for (
int copied = 0; copied <
source.Length; copied += num)
675 readOnlySpan = readOnlySpan.
Slice(copied, num);
700 return base.WriteLineAsync();
711 return base.WriteLineAsync(
value);
726 return base.WriteLineAsync(
value);
779 return base.FlushAsync();
792 if (
_charPos == 0 && !flushStream && !flushEncoder)
803 if (preamble.Length != 0)
826 ThrowObjectDisposedException();
828 void ThrowObjectDisposedException()
static unsafe void MemoryCopy(void *source, void *destination, long destinationSizeInBytes, long sourceBytesToCopy)
static void SuppressFinalize(object obj)
static readonly Encoding UTF8NoBOM
override void WriteLine(string format, params object?[] arg)
void Flush(bool flushStream, bool flushEncoder)
StreamWriter(string path, Encoding encoding, FileStreamOptions options)
override void Dispose(bool disposing)
override void Write(char[] buffer, int index, int count)
override void WriteLine(string? value)
override void Write(string? value)
static void ValidateArgs(string path, Encoding encoding)
override void WriteLine(string format, object? arg0, object? arg1)
bool _haveWrittenPreamble
StreamWriter(Stream stream, Encoding? encoding=null, int bufferSize=-1, bool leaveOpen=false)
static Encoding UTF8NoBOM
static void ThrowAsyncIOInProgress()
readonly Encoder _encoder
void CheckAsyncTaskInProgress()
StreamWriter(string path, bool append, Encoding encoding)
readonly char[] _charBuffer
override Task WriteAsync(ReadOnlyMemory< char > buffer, CancellationToken cancellationToken=default(CancellationToken))
readonly Encoding _encoding
static Stream ValidateArgsAndOpenPath(string path, bool append, Encoding encoding, int bufferSize)
override Task WriteLineAsync(string? value)
StreamWriter(string path, FileStreamOptions options)
override ValueTask DisposeAsync()
override Task WriteAsync(char value)
async Task WriteAsyncInternal(char value, bool appendNewLine)
static new readonly StreamWriter Null
override Task WriteLineAsync(char[] buffer, int index, int count)
override void Write(ReadOnlySpan< char > buffer)
override void Write(char[]? buffer)
override Task WriteAsync(char[] buffer, int index, int count)
unsafe void WriteSpan(ReadOnlySpan< char > buffer, bool appendNewLine)
override void Write(string format, object? arg0)
static Stream ValidateArgsAndOpenPath(string path, Encoding encoding, FileStreamOptions options)
StreamWriter(Stream stream)
override void Write(string format, object? arg0, object? arg1, object? arg2)
virtual Stream BaseStream
override Task FlushAsync()
async ValueTask DisposeAsyncCore()
override Task WriteLineAsync(ReadOnlyMemory< char > buffer, CancellationToken cancellationToken=default(CancellationToken))
override void Write(char value)
override void Write(string format, object? arg0, object? arg1)
override Task WriteAsync(string? value)
override void Write(string format, params object?[] arg)
StreamWriter(Stream stream, Encoding encoding)
StreamWriter(string path, bool append)
StreamWriter(string path, bool append, Encoding encoding, int bufferSize)
StreamWriter(string path)
StreamWriter(Stream stream, Encoding encoding, int bufferSize)
override Task WriteLineAsync()
async Task WriteAsyncInternal(ReadOnlyMemory< char > source, bool appendNewLine, CancellationToken cancellationToken)
override void WriteLine(string format, object? arg0, object? arg1, object? arg2)
override void WriteLine(string format, object? arg0)
void WriteFormatHelper(string format, ParamsArray args, bool appendNewLine)
override void WriteLine(ReadOnlySpan< char > buffer)
Task FlushAsyncInternal(bool flushStream, bool flushEncoder, CancellationToken cancellationToken=default(CancellationToken))
override Task WriteLineAsync(char value)
void CloseStreamFromDispose(bool disposing)
Task WriteAsync(byte[] buffer, int offset, int count)
void Write(byte[] buffer, int offset, int count)
static readonly Stream Null
static byte Min(byte val1, byte val2)
static string ArgumentOutOfRange_NeedPosNum
static string ObjectDisposed_WriterClosed
static string Argument_StreamNotWritable
static string Argument_EmptyPath
static string ArgumentNull_Buffer
static string Argument_InvalidOffLen
static string ArgumentOutOfRange_NeedNonNegNum
static string InvalidOperation_AsyncIOInProgress
int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush)
virtual ReadOnlySpan< byte > Preamble
int GetMaxByteCount(int charCount)
virtual Encoder GetEncoder()
virtual byte[] GetPreamble()
static void Release(StringBuilder sb)
static StringBuilder Acquire(int capacity=16)
ChunkEnumerator GetChunks()
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
static Task FromCanceled(CancellationToken cancellationToken)
static Task CompletedTask
static void ThrowArgumentNullException(string name)
unsafe ReadOnlySpan< T > Span
void CopyTo(Span< T > destination)
ReadOnlySpan< T > Slice(int start)
Span< T > Slice(int start)
ReadOnlyMemory< char > Current