From 57a40b91ce8d340f60717b73ab5d779e9f6a53be Mon Sep 17 00:00:00 2001 From: Jim <10913919+jimdemis@users.noreply.github.com> Date: Thu, 25 Apr 2019 05:50:47 +0300 Subject: [PATCH] Added optional/default parameters for StreamWriter/StreamReader (#24056) * Added optional/default parameters for StreamWriter/StreamReader * Disabled outdated test * Changed default encoding to UTF8NoBOM * Made encoding parameter nullable --- .../shared/System/IO/StreamReader.cs | 16 ++++++++++++---- .../shared/System/IO/StreamWriter.cs | 16 ++++++++++++---- tests/CoreFX/CoreFX.issues.json | 4 ++++ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/System.Private.CoreLib/shared/System/IO/StreamReader.cs b/src/System.Private.CoreLib/shared/System/IO/StreamReader.cs index 9d836c0..61accbf 100644 --- a/src/System.Private.CoreLib/shared/System/IO/StreamReader.cs +++ b/src/System.Private.CoreLib/shared/System/IO/StreamReader.cs @@ -135,17 +135,25 @@ namespace System.IO { } - 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); } diff --git a/src/System.Private.CoreLib/shared/System/IO/StreamWriter.cs b/src/System.Private.CoreLib/shared/System/IO/StreamWriter.cs index 3a99919..856dd27 100644 --- a/src/System.Private.CoreLib/shared/System/IO/StreamWriter.cs +++ b/src/System.Private.CoreLib/shared/System/IO/StreamWriter.cs @@ -90,18 +90,26 @@ namespace System.IO { } - 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); } diff --git a/tests/CoreFX/CoreFX.issues.json b/tests/CoreFX/CoreFX.issues.json index 3a3a17b..0849d71 100644 --- a/tests/CoreFX/CoreFX.issues.json +++ b/tests/CoreFX/CoreFX.issues.json @@ -775,6 +775,10 @@ { "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" } ] } -- 2.7.4