日期:2014-05-20 浏览次数:21098 次
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(); } } }
------解决方案--------------------
上面看错了,你的意思是原本是换行的就输出换行是吧!
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(); } } }
------解决方案--------------------