12.2.2 文件字节输入流类FileInputStream

12.2.2 文件字节输入流类FileInputStream

FileInputStream主要用于文件的输入,创建的对象可以顺序地从本地机上的文件中读数据。它从超类InputStream中继承read,close等方法对本机上的文件进行操作,但不支持mark方法和reset方法。

1.FileInputStream类的常用构造方法

• public FileInputStream(String name)throws FileNotFoundException

用本地机上的文件name构造文件字节输入流。

• public FileInputStream(File fileName)throws FileNotFoundException

用本地机上的文件filleName构造文件字节输入流。

说明:name为文件名,fileName为文件类File对象,即可以以文件名或File对象构造文件输入流对象。如

FileInputStream obj=new FileInputStream(“aaa.txt”);

以上语句以文件名aaa.txt构造文件数据输入流对象obj。

2.读取字节的方法

使用可以访问文件的一个字节、几个字节或整个文件。read方法有三种格式:

img501

说明:b是byte数组,作为输入缓冲区,off为b的起始位置,len为读取的最大长度。

read方法最多可以从输入流中读取len个字节,存入字节数组b中从off位置开始起,返回实际输入字节数。如果b的长度是0,则返回0。如果输入流结束,返回−1;该方法可能抛出多种异常:

(1)如果b是空,则抛出运行时异常NullPointerException;

(2)如果off或len为负数或off+len大于数组b的长度length,则抛出运行时异常IndexOutOfBoundsException;

(3)如果访问的文件不存在,导致无法读取数据,则发生I/O错,抛出IOException异常FileNotFoundException,所以使用时一定要捕获该异常。

3.关闭输入流

public void close()throws IOException

close方法关闭输入流,并释放相关的系统资源。发生I/O错时,抛出IOException异常。注意,因为Java提供系统垃圾自动回收功能,所以当一个流对象不再使用时,可以由运行系统自动关闭。但为了提高程序的安全性和稳定性,建议使用close方法关闭输入流。