黑马程序员技术交流社区
标题:
基础视频Day19练习2
[打印本页]
作者:
不怕黑人
时间:
2015-7-26 21:26
标题:
基础视频Day19练习2
package fuxi2;
import java.io.FileReader;
import java.io.IOException;
/**
* 需求:自定义个MyLineNumberReader装饰类,实现LineNumberReader功能。
*
*@author XiaLei
*/
public class Day19Test2 {
public static void main(String[] args) {
MyLineNumberReader lnr = null;
try{
lnr = new MyLineNumberReader(new FileReader("d:\\StringTest.txt"));
String line = null;
lnr.mySetLineNumber(100);
while((line=lnr.myReadLine())!=null){
System.out.println(lnr.myGetLineNumber()+":"+line);
}
}
catch(IOException e){
throw new RuntimeException("读取失败");
}
finally{
try{
if(lnr!=null){
lnr.myClose();
}
}
catch(IOException e){
throw new RuntimeException("关流失败");
}
}
}
}
class MyLineNumberReader{//这个类跟前面自定义MyBufferedReader装饰类,有很多相似功能,可以继承MyBufferedReader类,简化书写。
private FileReader fr;
private int count;
private int x;
MyLineNumberReader(FileReader fr){
this.fr = fr;
}
public String myReadLine() throws IOException{//根据readLine读取到换行符就返回之前读到的内容这一原理,设计自己的读取方式。
StringBuilder sb = new StringBuilder();//建立容器,将读到的内容存入。
int num = 0;
while((num=fr.read())!=0){
if(num=='\n')
continue;
if(num=='\r')
return sb.toString();
else
sb.append((char)num);
}
if(sb.length()!=0)
return sb.toString();
return null;
}
public int mySetLineNumber(int x){
return this.x=x;
}
public int myGetLineNumber(){
if(count==0)
count = x;
return 1+count++;
}
public void myClose() throws IOException{//建立自己的关流动作。
fr.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2