一共三个问题:1,//这句话没有异常,为什么写在try以外,程序就读不出来东西了!!但是没错误!
mylnr = new MyLineNumberReader(fr);
2, //这句有什么用?为什么返回的是null?
return null;
3,结果为什么有好多空行?
例如251:
//中间这一行是空行,全部都有空行
252:}
public class 有错误MyLineNumberReaderDemo {
/**
* 自定义按行号读取
*/
public static void main(String[] args) {
FileReader fr = null;
MyLineNumberReader mylnr = null;
try
{
fr = new FileReader("PersonDemo.java");
//这句话没有异常,为什么写在try以外,程序就读不出来东西了!!但是没错误!
mylnr = new MyLineNumberReader(fr);
String line = null;
mylnr.setLineNumber(200);//设置起始行号
while((line=mylnr.myReadLine())!=null)
{
System.out.println(mylnr.getLineNumber()+":"+line);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if(mylnr!=null)
{
mylnr.myClose();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
//自定义按行号读取
class MyLineNumberReader
{
private Reader r;
private int lineNumber;
MyLineNumberReader(Reader r)
{
this.r = r;
}
public String myReadLine()
{
lineNumber++;
//定义一个临时容器。原BufferedReader封装的是字符数组。
//为了演示方便。定义一个StringBuilder容器。因为最终还是要将数据变成字符串。
StringBuilder sb = new StringBuilder();
int ch = 0;
try
{
while((ch=r.read())!=-1)
{
if(ch=='r')
{
continue;
}
if(ch=='\n')
{
return sb.toString();
}
else
{
sb.append((char)ch);
}
}
if(sb.length()!=0)
{
return sb.toString();
}
}
catch(Exception e)
{
}
//这句有什么用?为什么返回的是null?
return null;
}
public void setLineNumber(int lineNumber)
{
this.lineNumber = lineNumber;
}
public int getLineNumber()
{
return lineNumber;
}
public void myClose()
{
try
{
r.close();
}
catch(Exception e)
{
}
}
}
|
|