日期:2014-05-20  浏览次数:21044 次

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

应该怎样读取出来原字符串的情况
"Hello
World"

------解决方案--------------------
你加入换行的转义字符译(\n)试试 "Hello\nWorld"
------解决方案--------------------
Java code

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();
                }
        }
}

------解决方案--------------------
上面看错了,你的意思是原本是换行的就输出换行是吧!
Java code

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();
                }
        }
}

------解决方案--------------------