java 输入流类FileInputStream下的read()是什么意思?

JDK帮助文档查到解释如下:read()publicintread(byte[]b,intoff,intlen)throwsIOException从此输入流中将最多len... JDK帮助文档查到解释如下:read()
public int read(byte[] b, int off,int len) throws IOException
从此输入流中将最多 len 个字节的数据读入一个字节数组中。在某些输入可用之前,此方法将阻塞。
返回:
读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1
------问题:1下面我不知道这个read()到底返回什么,我把它打印出来,数字很怪。书上是强制把read()转化为char 类型:
text[count]=( (char) fileobject.read());
------问题2:转化成char类型的read()有什么特别的?
完整代码如下: 若觉得很多,可以不看完整代码。谢谢!
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
class FileInputStreamTest
{
public FileInputStreamTest()
{}
public static void main(String [] args) throws IOException
{

InputStream fileobject=new FileInputStream("Text.txt");
int size;
System.out.println("可读取的字节:"+(size=fileobject.available()));
System.out.println("文件内容如下:");
char [] text =new char[200];
for(int count=0;count<size-1;count++)
{
text[count]=( (char) fileobject.read());
System.out.print(text[count]);
}

int aaa=fileobject.read();
System.out.println("打印出aaa:"+aaa);//打印aaa=98
fileobject.close(); //当for里count<size时,打印aaa=-1
}

}
展开
 我来答
du瓶邪
2015-07-13 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2947万
展开全部
该类意思是:从InputStream中派生出来的简单输入类。
一、构造方法
FileInputStream(String name); //使用给定的文件名创建对象
FileInputStream(File file); //使用File对象创建FileInputStream对象
二、读取文件
1.使用文件输入流读取文件
FileInuputStream istream=new FileInputStream("myfile.dat");
或:
File f=new File("myfile.dat");
FileInputStream istream=new FileInputStream(f);
构造方法可能会产生异常IOException,故为了把一个文件输入流对象与一个文件关联起来,需:
try { FileInputStream ins=new FileInputStream("myfile.dat");}
catch (IOException e){ System.out.println("File read error:"+e);}
2.从输入流中读取字节
int read(); //从输入流中读取单个字节数据(0~255),如到输入流末尾则返回-1
int read(byte b[]); //读多个字节
int read(byte b[],int off,int len);
3.关闭流
Java在程序结束时自动关闭所有打开的流,但显式关闭任何打开的流是一个好习惯。
close();
阿若45
2008-08-26 · 超过22用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:72.3万
展开全部
两个都属于字节流读取方式。
char 的范围是0~255
byte 的范围是-128~127
用char型就能读出该数据的ASCII字符,
如果用byte读出来就将是数字,并且有可能是负数。
而你这个例子,无疑是想打印出该文件中,各个字节的ASCII码。所以转成了char型,再把char转成int型。
一般纯文本文件,我们都可以用char来读取。
但对于非文本文件,我们就最好用byte来读了,因为我们读到的那个字节很可能不是正数。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rrroger
2008-08-24 · TA获得超过1715个赞
知道小有建树答主
回答量:824
采纳率:0%
帮助的人:0
展开全部
你看的那个read只是FileInputStream的一个实现,这个read方法被overload了
text[count]=( (char) fileobject.read());
用的是下面这个没有参数的read方法

read
public int read()
throws IOException
Reads a byte of data from this input stream. This method blocks if no input is yet available.

返回的是一个int值, 是从文本里面读出来的一个字节
你的程序给强制转换为char是为了方便打印
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天梦半纯唯19
2008-08-24 · TA获得超过1265个赞
知道小有建树答主
回答量:1348
采纳率:0%
帮助的人:1313万
展开全部
read()当然就是读了`
也看你read里加不加参数 不加就是一个一个个的读

你写了一句话``比如
"abc"

那打印的就是 97 98 99
你试试 按 住alt键不放 右手再按数字键上的 这些数字 是不是打的abc
那read 就是将这些 字符串 转换为数字 (可以这样理解)
然后char
可以将他们还原 显示为对应的字母
如97 --a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5669025
2008-08-25 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:0
展开全部
FileInputStream的read() 默认情况下 返回 ASCII码

读取文件的时候 这样来做比较好点

FileInputStream file=new FileInputStream("filename");
InputStreamReader isr=new InputStreamReader(file);
BufferedReader br=new BufferedReader(isr);
try{
String show=br.readLine();
while(show!=null){
//String show=br.readLine();
System.out.println(show);
show=br.readLine();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式