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(); } }}
------解决方案--------------------
[解决办法]
[解决办法]
在读取的时候加入换行符
[解决办法]
[解决办法]
读取完一行后添加
stringBuffer.append(System.getProperty("line.separator"));