在传输的字节数据的时候使用的
BufferReader读取的像
"Hello
World"
的字符串中包含有换行的情况,读取出来后始终没有换行的情况,读取的结果是"HelloWorld"。应该怎样读取出来原字符串的情况
"Hello
World"

解决方案 »

  1.   

    你加入换行的转义字符译(\n)试试 "Hello\nWorld"  
      

  2.   


    public class BufferReader {
            public static void main(String[] args) throws IOException{
                    FileReader fr=new FileReader("se.txt");
                    MyBufferedReader mybuf=new MyBufferedReader(fr);
                    String line=null;
                    while((line=mybuf.myReadLine())!=null)
                    {
                            System.out.println(line);
                    }
                    mybuf.myClose();
            }}
    class MyBufferedReader{
            private FileReader r;
            MyBufferedReader(FileReader r)
            {
                    this.r=r;
            };
            //可以一次读一行数据的方法
            public String myReadLine(){
                    StringBuilder sb=new StringBuilder();
                    int ch=0;
                    try {
                            while((ch=r.read())!=-1)
                            {
                                    if(ch=='\r')
                                            continue;;
                                    if(ch=='\n')
                                            continue;
                                    else
                                    sb.append((char)ch);
                            }
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
                    if(sb.length()!=0)
                            return sb.toString();
                    return null;
            }
            public void myClose(){
                    try {
                            r.close();
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
            }
    }试试看
      

  3.   


    我传输的
    "Hello
    World"
    不是我手动写的,是系统自动传输的。
      

  4.   

    上面看错了,你的意思是原本是换行的就输出换行是吧!package com.test.bufferreader;import java.io.FileReader;
    import java.io.IOException;/*
    明白了BuffredReader类中特有的方法readLine的原理后
    可以自定义一个类中包含和readLine原理一样的方法
    来模拟一下BuffreedReader
    */
    public class BufferReader {
            public static void main(String[] args) throws IOException{
                    FileReader fr=new FileReader("c:tzh.txt");
                    MyBufferedReader mybuf=new MyBufferedReader(fr);
                    String line=null;
                    while((line=mybuf.myReadLine())!=null)
                    {
                            System.out.println(line);
                    }
                    mybuf.myClose();
            }}
    class MyBufferedReader{
            private FileReader r;
            MyBufferedReader(FileReader r)
            {
                    this.r=r;
            };
            //可以一次读一行数据的方法
            public String myReadLine(){
                    StringBuilder sb=new StringBuilder();
                    int ch=0;
                    try {
                            while((ch=r.read())!=-1)
                            {
                                    if(ch=='\r')
                                            continue;
                                    if(ch=='\n')
                                            break;   //应该是break,本身该方法就只是一行一行的读取,当读取到换行符时,说明已到一行了,不该再继续读下去,所以应使用“break;”
                                    else
                                    sb.append((char)ch);
                            }
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
                    if(sb.length()!=0)
                            return sb.toString();
                    return null;
            }
            public void myClose(){
                    try {
                            r.close();
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
            }

      

  5.   


    StringBuffer strBuf = new StringBuffer();
    while ((i = bufferedReader.read()) != -1) {
    strBuf.append(bufferedReader.readLine());
    }
      

  6.   

    读取完一行后添加
    stringBuffer.append(System.getProperty("line.separator"));
      

  7.   

    我使用的方法是,将每一行的数据读取出来放到List或者数组中,最后再将List或者数组中的组合成一个就可以了。
    这种方法确实可行,但是比较麻烦。