在DataInputStream中,无参的read()是在哪实现的,我查了源代码及帮肋,在InputStream中,read()是抽象的,必须在子类中实现,而在子类FilterInputStream中,read()也只是返回InputStream对象中的read(),根本就没有方法的实现,而我在程序中并没对read()重写,只是用DataInputStream派生一个类,但它能通过super.read()读取文件中的内容,并返回整数,但读到末尾并不返回-1。请问到底是怎么一会事,怎么想也不明白,请大家指点一下,谢谢!
import java.io.*;
class Stream2Test
{
public static void main(String[] args) throws Exception
{
File f0=new File("e:\\javaprogram\\lesson7\\123");
File f1=new File(f0,"1.txt");
f1.createNewFile();
FileOutputStream os=new FileOutputStream(f1);
DataOutputStream dos=new DataOutputStream(os);
String s="abcdefghijk";
dos.writeBytes(s);
FileInputStream is=new FileInputStream(f1);
AddReadWay dis=new AddReadWay(is);
System.out.println(dis.readBytes());
}
}
class AddReadWay extends DataInputStream
{
AddReadWay(InputStream in)
{
super(in);
}
byte[] buf=new byte[100];
String readBytes()
throws Exception{
int i=0;
while(read()!=-1)
{
buf[i++]=(byte)(read());
}
return new String(buf,0,i-1);
/*int len;
len=in.read(buf);
return new String(buf,0,len);*/
}
}
代码如上,因去掉read()重写,故去掉了super。