java IO流

package MyIo1;
import java.io.* ;
public class MyLineNumberReader
{
private Reader r ;
private int lineNumber ;
MyLineNumberReader(Reader r)//Reader r是什么
{
this.r = r ;
}
public String myReadLine() throws IOException
{
lineNumber++ ;
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 setLineNumber(int lineNumber)
{
this.lineNumber = lineNumber ;
}
public int getLineNumber()
{
return lineNumber ;
}
public void myClose() throws IOException
{
r.close() ;
}
}
class MyLineNumberReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("新建.txt") ;
MyLineNumberReader mylnr = new MyLineNumberReader(fr) ;
String line = null ;
mylnr.setLineNumber(100) ;
while((line=mylnr.myReadLine())!=null)
{
System.out.println(mylnr.getLineNumber()+"::"+line) ; ;
}
mylnr.myClose() ;
}
}
这是一个io装饰类不清楚Reader是什么,如果是类可是怎么没有写Reader类,,,
和import Java io.*有关系吗。
MyLineNumberReader(Reader r)
我用代码补充说明下
public class ZhuangShiLei
{
public static void main(String[] args)
{
Person p = new Person() ;
//这个下面有个class Person类

SuperPerson sp = new SuperPerson(p) ;//p代表class Person
sp.superchifan() ;
}
}
class Person
{
{
System.out.println("吃饭") ;
}
}
class SuperPerson
{
private Person p;
SuperPerson(Person p)
{
this.p = p ;
}
public void superchifan()
{
System.out.println("汤") ;
p.chifan();
}
}
MyLineNumberReader(Reader r)
Reader是代表class Reade吗
如果是 ,代码没有class Reader 的类 这是怎么回事

第1个回答  2016-07-10
如果in==null,就说明in这个引用所指向的对象还没有被创建,自然in.close()也就不可能被执行,而且会报异常。我是这样想的,程序中如果你先声明变量InputStream(或者其他流类型)in=null;然后执行其他语句,再in=new、、、、在innew之前其他语句出exception,这时流没有被打开,也就无需关闭,如果不判断if(null!=in)硬要关闭in就出exception另外你的代码按如下写会更合理:if(null!=in){try{in.flush();in.close();in=null;}catch(IOExectione){};}追问

我只是想知道Reader是不是class类如果是代码没有写出
MyLineNumberReader(Reader r)//Reader r是什么
{
this.r = r ;
}

相似回答
大家正在搜