黑马程序员技术交流社区
标题:
IO流中方法的调用问题
[打印本页]
作者:
李健09
时间:
2013-8-26 21:29
标题:
IO流中方法的调用问题
本帖最后由 李健09 于 2013-8-27 15:10 编辑
package com.IO2;
/*
明白了BufferedReader类中特有的方法readLine的原理后,可以自己定义一个类中包含一个功能和readLine一直的方法,
来模拟一下BufferedReader
*/
import java.io.*;
class MyBufferedReader
{
private FileReader r;
MyBufferedReader(FileReader r)
{
this.r =r;
}
//可以一次读一行数据的方法
public String myReadLine() throws IOException
{
//定义一个临时容器,原BufferReader封装的是字符数组,为了演示方便,定义一个StringBuilder容器,
//因为最终还是要将数据变成字符串
StringBuilder sb=new StringBuilder();
int ch=0;
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();
return null;
}
public void myClose() throws IOException
{
r.close();
}
}
public class MyBufferedReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("F:\\java\\Workspaces\\MyEclipse Bling Edition 10\\day19\\mybufferedReader.txt");
MyBufferedReader myBuf=new MyBufferedReader(fr);
String line=null;
while((line=myBuf.myReadLine())!=null)
{
sop(line);
}
myBuf.myClose();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
问下 主函数中while 语句中 line=myBuf.myReadLine())!=null line直接指向MyBufferedReader类的myReadLine() 方法不是应该是类名调用吗?
帮忙解释下;谢
作者:
神之梦
时间:
2013-8-26 22:00
{:soso_e136:}
没懂 楼主想问神马
作者:
刘张朋
时间:
2013-8-26 22:16
首先你的myReadLine() 方法时非静态的,必须有一个this所属,怎么能够类名调用呢?
其次“主函数中while 语句中 line=myBuf.myReadLine())!=null line直接指向MyBufferedReader类的myReadLine() 方法”这个说法有误吧,这里应该是将myReadLine()的返回值赋给line啊,line怎么又指向了myReadLine() 方法了?
作者:
李健09
时间:
2013-8-27 15:08
不好意思二位 是我想多了 刘张朋 说的对,看了解释恍然大悟想的离谱了
作者:
李健09
时间:
2013-8-27 15:09
神之梦 发表于 2013-8-26 22:00
没懂 楼主想问神马
{:soso_e110:}{:soso_e117:}{:soso_e118:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2