黑马程序员技术交流社区
标题:
求解答
[打印本页]
作者:
艾衍年
时间:
2012-7-14 13:21
标题:
求解答
//看毕老师的视频,IO流,通过缓冲区复制文本文件的知识,下面这一点儿不是很明白,代码贴出来了,也给出注释,希望各位亲们能帮忙解答
public String myReadLine() throws IOException //这里是自己写的一个方法,根据BufferecReader类中readLine方法的原理
{
StringBuilder sb = new StringBuilder(); //使用StringBuilder的一个对象,模拟一个存储区
int ch = 0;
while((ch = fr.read()) != -1 )
{
if(ch == '\r')
continue;
if(ch == '\n') //换行是\r\n,如果遇到的是 '\r' ,就跳过这次循环执行下一次,如果读到的是 '\n' ,就就把存到缓冲区里的字符返回
return sb.toString(); //这里也是返回1
else //否则 就继续往缓冲区里读内容
sb.append((char)ch);
}
if(sb.length() != 0) //这里是 假如针对文本最后一行没有换行符的情况,读到文件末就判断一下缓冲区里有没有数据,有数据就输出。
return sb.toString(); //这里也是返回2
return null; //这里也是返回 3
}
//这里是主函数
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
FileReader r = new FileReader("乱七八糟.txt");
MyBufferedReader myBuf = new MyBufferedReader(r);
String line = null;
while((line = myBuf.myReadLine()) != null); //用line接受myReadLine方法返回的字符
{
System.out.println(line); //输出line
}
myBuf.myClose(); //关闭FileRead
}
问题出来了,这个三个返回!!毕老师讲解的时候代码能正常运行,输出的是文件里的内容,我按照老师的敲在Myeclise里运行结果一直是 null,我疑惑的是老师的那三个返回,到底返回的啥,为什么我的一直输出的null,那不就是一直返回null的?
这个是文件内容 这个是文件位置
未命名.jpg
(13.05 KB, 下载次数: 3)
下载附件
2012-7-14 13:17 上传
未命名1.jpg
(11.63 KB, 下载次数: 4)
下载附件
2012-7-14 13:18 上传
作者:
游兴钟
时间:
2012-7-14 16:21
本帖最后由 achilles 于 2012-7-14 16:25 编辑
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
FileReader r = new FileReader("乱七八糟.txt");
MyBufferedReader myBuf = new MyBufferedReader(r);
String line = null;
while((line = myBuf.myReadLine()) != null)
;
//你这里加了个;下面的那句输出语句不受循环的控制了.前面定义了line=null,所以下面的输出语句当然都是null
{
System.out.println(line); //输出line
}
myBuf.myClose(); //关闭FileRead
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2