日期:2014-05-20 浏览次数:21279 次
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(); } } }
------解决方案--------------------