If we wanted to go the route of changing the spec to match the behavior, the additional verbiage below is one possibility.
Thanks, Brian +++ b/src/java.base/share/classes/java/io/LineNumberReader.java @@ -35,19 +35,20 @@ * <p> By default, line numbering begins at 0. This number increments at every * <a href="#lt">line terminator</a> as the data is read, and can be changed * with a call to {@code setLineNumber(int)}. Note however, that * {@code setLineNumber(int)} does not actually change the current position in * the stream; it only changes the value that will be returned by * {@code getLineNumber()}. * * <p> A line is considered to be <a id="lt">terminated</a> by any one of a * line feed ('\n'), a carriage return ('\r'), or a carriage return followed - * immediately by a linefeed. + * immediately by a linefeed. For {@link #readLine()} only, the end of the + * stream is also considered to be a line terminator. public class LineNumberReader extends BufferedReader { /** The current line number */ private int lineNumber = 0; @@ -183,19 +184,21 @@ } } return n; } } /** * Read a line of text. Whenever a <a href="#lt">line terminator</a> is - * read the current line number is incremented. + * read the current line number is incremented. Unlike for the other + * {@code read} methods of this class, reaching the end of the stream + * will also increment the current line number. * * @return A String containing the contents of the line, not including * any <a href="#lt">line termination characters</a>, or * {@code null} if the end of the stream has been reached * * @throws IOException * If an I/O error occurs */ public String readLine() throws IOException { > On Sep 9, 2019, at 12:02 PM, Brian Burkhalter <brian.burkhal...@oracle.com> > wrote: > >> On Sep 9, 2019, at 7:35 AM, Roger Riggs <roger.ri...@oracle.com >> <mailto:roger.ri...@oracle.com>> wrote: >> >> I would lean toward updating the spec to reflect the current implementation. > > It seems strange however that if one read an entire stream using read() in > one case and readLine() in another that the results would differ.