Newline character omitted while reading from buffer

前端 未结 6 2039
一个人的身影
一个人的身影 2021-01-11 16:22

I\'ve written the following code:

public class WriteToCharBuffer {

 public static void main(String[] args) {
  String text = \"This is the data to write in          


        
相关标签:
6条回答
  • 2021-01-11 17:10

    JavaDoc Says

    public String readLine()
                    throws IOException
    

    Reads a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.
    Returns:
    A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
    Throws:

    0 讨论(0)
  • 2021-01-11 17:15

    readline() does not return the platforms line ending. JavaDoc.

    0 讨论(0)
  • 2021-01-11 17:15

    This is because of readLine(). From Java Docs:

    Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.

    So what is happening is your "\n" are being considered as a line feed so reader considers that to be a line.

    0 讨论(0)
  • 2021-01-11 17:16

    From Javadoc

    Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.

    You can do something like that

    buffer.append(line);
    buffer.append(System.getProperty("line.separator"));
    
    0 讨论(0)
  • 2021-01-11 17:17

    Just in case someone wants to read the text with '\n' included.

    try this simple approach

    So,

    Say, You have three lines of data (say in a .txt file) , like this

    This is the data to write in buffer!
    This is the second line
    This is the third line
    

    And while reading, you are doing something like this

        String content=null;
        String str=null;
        while((str=bufferedReader.readLine())!=null){ //assuming you have 
        content.append(str);                     //your bufferedReader declared.
        }
        bufferedReader.close();
        System.out.println(content);
    

    and expecting the output to be

    This is the data to write in buffer!
    This is the second line
    This is the third line
    

    but scratching your head upon seeing output as a single line

    This is the data to write in buffer!This is the second lineThis is the third line
    

    Here is what you can do

    by adding this piece of code inside your while loop

    if(str.trim().length()==0){
       content.append("\n");
    }
    

    So now what your while loop should look like

    while((str=bufferedReader.readLine())!=null){
        if(str.trim().length()==0){
           content.append("\n");
        }
        content.append(str);
    }
    

    Now you get required output (as three lines of text)

    This is the data to write in buffer!
    This is the second line
    This is the third line
    
    0 讨论(0)
  • 2021-01-11 17:22

    This is what the javadocs says for the readLine() method of class BufferedReader

     /**
     * Reads a line of text.  A line is considered to be terminated by any one
     * of a line feed ('\n'), a carriage return ('\r'), or a carriage return
     * followed immediately by a linefeed.
     *
     * @return     A String containing the contents of the line, not including
     *             any line-termination characters, or null if the end of the
     *             stream has been reached
     *
     * @exception  IOException  If an I/O error occurs
     */
    
    0 讨论(0)
提交回复
热议问题