黑马程序员技术交流社区
标题:
一个报警告的问题,无视也可以编译通过。
[打印本页]
作者:
陈洋
时间:
2013-9-3 09:53
标题:
一个报警告的问题,无视也可以编译通过。
package cn.itcast.io;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
public class ReadLineDemo {
// 模拟readLine()读取一行的方法。
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
MyBufferedReader br = new MyBufferedReader(new FileReader("a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
String str=null;
while((str=br.myReadLine())!=null){
bw.write(str);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
}
//自定义MyBufferedReader
class MyBufferedReader extends Reader{
private Reader r;
public MyBufferedReader(Reader r) {
this.r = r ;
}
public String myReadLine() throws Exception{
StringBuilder sb = new StringBuilder();
int len =0;
while((len=r.read())!=-1){
if(len=='\r')
continue;
if(len=='\n'){
return sb.toString();
}else
sb.append((char)len);
}
if(sb.length()>0)
return sb.toString();
return null;
}
public void close() throws IOException{
r.close();
}
public int read(char[] cbuf,int off,int len) throws IOException{
return r.read(cbuf,off,len);
}
}
上面的是模拟readLine的方法
-------------------------------------------------
下面是模拟LineNumberReader
package cn.itcast.io;
import java.io.FileReader;
import java.io.Reader;
public class LineNumberDemo {
// 模拟带行号的读取流
public static void main(String[] args) throws Exception {
//下面这句代码的eclipse提示警告说我这个流没有关闭,不知道为什么,如果我不自定义myclose(),直接使用父类的close(),就不会报警告。
MyLineNumber mln = new MyLineNumber(new FileReader("a.txt"));
String str=null;
while((str=mln.myReadLine())!=null){
System.out.println(mln.getNumber()+"::"+str);
}
mln.myclose();
}
}
class MyLineNumber extends MyBufferedReader{
private int number;
MyLineNumber(Reader r){
super(r);
}
public void myclose() throws Exception{//我这里明明自定义myclose()调用了父类的close()
super.close();
}
public String myReadLine() throws Exception{
number++;
return super.myReadLine();
}
public void setNumber(int number){
this.number=number;
}
public int getNumber(){
return this.number;
}
}
复制代码
问题在上面的注释处,大家帮帮我。{:soso_e117:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2