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

2024-10-27 19:50:48
有5个网友回答
网友(1):

该类意思是:从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();

网友(2):

两个都属于字节流读取方式。
char 的范围是0~255
byte 的范围是-128~127
用char型就能读出该数据的ASCII字符,
如果用byte读出来就将是数字,并且有可能是负数。
而你这个例子,无疑是想打印出该文件中,各个字节的ASCII码。所以转成了char型,再把char转成int型。
一般纯文本文件,我们都可以用char来读取。
但对于非文本文件,我们就最好用byte来读了,因为我们读到的那个字节很可能不是正数。

网友(3):

你看的那个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是为了方便打印

网友(4):

read()当然就是读了`
也看你read里加不加参数 不加就是一个一个个的读

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

那打印的就是 97 98 99
你试试 按 住alt键不放 右手再按数字键上的 这些数字 是不是打的abc
那read 就是将这些 字符串 转换为数字 (可以这样理解)
然后char
可以将他们还原 显示为对应的字母
如97 --a

网友(5):

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();
}
}