RFR: JDK-8167648: java.io.PrintWriter should have PrintWriter((String|File), Charset) constructors
Stephen Colebourne
scolebourne at joda.org
Wed Nov 23 11:04:41 UTC 2016
These are the current constructors:
PrintWriter(Writer)
PrintWriter(Writer, boolean)
PrintWriter(OutputStream)
PrintWriter(OutputStream, boolean)
PrintWriter(String)
PrintWriter(String, String)
PrintWriter(File)
PrintWriter(File, String)
These are the annoying missing ones (not all of the possible combinations):
PrintWriter(OutputStream, Charset)
PrintWriter(OutputStream, Charset, boolean)
PrintWriter(String, Charset)
PrintWriter(String, Charset, boolean)
PrintWriter(File, Charset)
PrintWriter(File, Charset, boolean)
there are other missing Charset methods on FileWriter.
Perhaps a method withAutoFlush(boolean) could reduce the number of
constructors? And perhaps the String filename is an anachronism?
Thus, adding these three methods might be enough:
PrintWriter(OutputStream, Charset)
PrintWriter(File, Charset)
withAutoFlush(boolean)
Stephen
On 23 November 2016 at 09:52, Patrick Reinhart <patrick at reini.net> wrote:
> Are there any obligations to add those constructors?
>
> -Patrick
>
> On 2016-11-18 10:19, Patrick Reinhart wrote:
>
>> I was looking at the existing JDK 9 issues for some simple ones I
>> could solve and found this one. I wanted to know if it makes sense to
>> add additional constructors here?
>>
>> Now you need to do this:
>> ------------------------
>> try {
>> new PrintWriter(file, "UTF-8");
>> } catch (UnsupportedEncodingException e) {
>> // Ignore, this is required to be supported by the JVM.
>> }
>>
>> The same applies also to the String constructor...
>>
>>
>>
>> Instead the following behaviour is requested:
>> ---------------------------------------------
>> new PrintWriter(file, StandardCharsets.UTF_8));
>>
>>
>>
>> On the other hand then the next request will be to add constructors
>> also to specify autoflush and so on...
>>
>> -Patrick
More information about the core-libs-dev
mailing list