天天看点

Android FileInputStream类的使用

FileInputStream类

1.FileInputStream类概述

    继承关系:

       java.io.FileInputStream->java.io.InputStream->java.lang.Object

    实现接口:

       Closeable

    类的功能:

       FileInputStream 从文件系统中的某个文件中获取输入字节。哪些文件可用取决于主机环境。

       FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。

2.类的属性和行为

   (1) public void close() throws IOException

    功能:  关闭此文件输入流并释放与此流有关的所有系统资源。

            如果此流有一个与之关联的通道,则关闭该通道。

    指定者:接口 Closeable 中的 close

    覆盖:  类 InputStream 中的 close

    抛出:  IOException - 如果发生 I/O 错误。

   (2) public int read() throws IOException

    功能:  从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。

    指定者:类 InputStream 中的 read

    返回:  下一个数据字节;如果已到达文件末尾,则返回 -1。

    抛出:  IOException - 如果发生 I/O 错误。

   (3) public int read(byte[] b) throws IOException

    功能:从此输入流中将最多b.length个字节的数据读入一个字节数组中。在某些输入可用前,此方法将阻塞

    覆盖:类 InputStream 中的 read

    参数:b - 存储读取数据的缓冲区

    返回:读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。

    抛出:IOException - 如果发生 I/O 错误。

   (4) public int read(byte[] b, int off, int len) throws IOException

    功能:从此输入流中将最多len个字节的数据读入一个字节数组中。在某些输入可用之前,此方法将阻塞。

    覆盖:类 InputStream 中的 read

    参数:b - 存储读取数据的缓冲区。

          off - 数据的起始偏移量。

          len - 读取的最大字节数。

    返回:读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。

    抛出:IOException - 如果发生 I/O 错误。

3.常见错误

   在eclipse下使用FileInputStream,提示找不到指定文件

   代码:

       filename = "abc.txt" ;

       FileInputStream fis = new FileInputStream(filename);

   错误显示:

       java.io.FileNotFoundException: dbconfig.properties (系统找不到指定的文件。)

       at java.io.FileInputStream.open(Native Method)

       at java.io.FileInputStream.<init>(FileInputStream.java:106)

       at java.io.FileInputStream.<init>(FileInputStream.java:66)

   解决方法:

       因为eclipse下运行main程序时,eclipse会自动将发布目录作为其根目录,所以会提示找不到文件,将filename改为绝对目录即可

       filename = "\sdcard\...\abc.txt" ;