| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 497 人关注过本帖
标题:read()的实现
只看楼主 加入收藏
lzyren2008
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2007-8-12
收藏
 问题点数:0 回复次数:1 
read()的实现

在DataInputStream中,无参的read()是在哪实现的,我查了源代码及帮肋,在InputStream中,read()是抽象的,必须在子类中实现,而在子类FilterInputStream中,read()也只是返回InputStream对象中的read(),根本就没有方法的实现,而我在程序中并没对read()重写,只是用DataInputStream派生一个类,但它能通过super.read()读取文件中的内容,并返回整数,但读到末尾并不返回-1。请问到底是怎么一会事,怎么想也不明白,请大家指点一下,谢谢!

搜索更多相关主题的帖子: read 
2007-09-09 16:36
lzyren2008
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2007-8-12
收藏
得分:0 
回复:(lzyren2008)read()的实现

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。

2007-09-09 16:53
快速回复:read()的实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.010982 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved