import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class MyReadLine {
/**
* 明白了BufferedReader类中特有的readLine方法的原理后,
* 可以自定义一个类中包含一个功能和readLine一致的方法。来模拟一下Bufferedread
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
//定义要读取的文件
FileReader fr = new FileReader("D:/CopyBuf.txt");
//关联要读取的文件
MyBufferedRead myb = new MyBufferedRead(fr);
//初始化用于存储字符的String变量
String line = null;
//循环读取数据
while((line = myb.myRead())!=null){
System.out.println(line);
}
myb.myClose();
}
}
class MyBufferedRead{
//可以一次读一行的方法
private FileReader fr;
MyBufferedRead(FileReader fr){
this.fr = fr;
}
public String myRead() throws IOException{
//定义一个容器,原BufferedReader封装的是字符数组。
//为了演示方便,在这里就定义一个StringBuilder容器。因为最终还是要将数据变成字符串。
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch = fr.read())!=-1){
if(ch=='\r')
continue;
if (ch=='\n')
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!=0)
return sb.toString();
return null;
}
public void myClose() throws IOException{
fr.close();
}
} |
|