{
}
- public StreamReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize, bool leaveOpen)
+ public StreamReader(Stream stream, Encoding? encoding = null, bool detectEncodingFromByteOrderMarks = true, int bufferSize = -1, bool leaveOpen = false)
{
- if (stream == null || encoding == null)
+ if (stream == null)
{
- throw new ArgumentNullException(stream == null ? nameof(stream) : nameof(encoding));
+ throw new ArgumentNullException(nameof(stream));
+ }
+ if (encoding == null)
+ {
+ encoding = Encoding.UTF8;
}
if (!stream.CanRead)
{
throw new ArgumentException(SR.Argument_StreamNotReadable);
}
- if (bufferSize <= 0)
+ if (bufferSize == -1)
+ {
+ bufferSize = DefaultBufferSize;
+ }
+ else if (bufferSize <= 0)
{
throw new ArgumentOutOfRangeException(nameof(bufferSize), SR.ArgumentOutOfRange_NeedPosNum);
}
{
}
- public StreamWriter(Stream stream, Encoding encoding, int bufferSize, bool leaveOpen)
+ public StreamWriter(Stream stream, Encoding? encoding = null, int bufferSize = -1, bool leaveOpen = false)
: base(null) // Ask for CurrentCulture all the time
{
- if (stream == null || encoding == null)
+ if (stream == null)
{
- throw new ArgumentNullException(stream == null ? nameof(stream) : nameof(encoding));
+ throw new ArgumentNullException(nameof(stream));
+ }
+ if (encoding == null)
+ {
+ encoding = UTF8NoBOM;
}
if (!stream.CanWrite)
{
throw new ArgumentException(SR.Argument_StreamNotWritable);
}
- if (bufferSize <= 0)
+ if (bufferSize == -1)
+ {
+ bufferSize = DefaultBufferSize;
+ }
+ else if (bufferSize <= 0)
{
throw new ArgumentOutOfRangeException(nameof(bufferSize), SR.ArgumentOutOfRange_NeedPosNum);
}
{
"name": "System.IO.Tests.StreamWriterWithBufferedStream_CloseTests.AfterCloseThrows",
"reason": "Readers/writers changed to not null out base stream on dispose"
+ },
+ {
+ "name": "System.IO.Tests.CtorTests.NullEncodingThrows",
+ "reason": "StreamReader/StreamWriter changed to accept null encoding"
}
]
}