编辑这个页面须要登录或更高权限!

Java FileInputStream 类

在本教程中,我们将借助示例学习Java FileInputStream及其方法。

java.io包的FileInputStream类可用于从文件中读取数据(以字节为单位)。

它继承了InputStream抽象类。

Java FileInputStream是InputStream类的子类。

在学习之前FileInputStream,请确保已经了解Java File(文件)

创建一个FileInputStream

为了创建文件输入流,我们必须首先导入java.io.FileInputStream包。导入包后,就可以使用Java创建文件输入流。

1.使用文件路径

FileInputStream input = new FileInputStream(stringPath);

在这里,我们创建了一个输入流,该输入流将链接到所指定的文件路径。

2.使用文件的对象

FileInputStream input = new FileInputStream(File fileObject);

在这里,我们创建了一个输入流,该输入流将链接到由fileObject指定的文件。

FileInputStream的方法

FileInputStream类为InputStream类中出现的不同方法提供了实现。

read()方法

  • read() - 从文件中读取一个字节

  • read(byte[] array) - 从文件中读取字节并存储在指定的数组中

  • read(byte[] array, int start, int length) - 从文件中读取等于length的字节数,并从位置start开始存储在指定的数组中

假设我们有一个名为input.txt的文件,其中包含以下内容。

This is a line of text inside the file.

让我们尝试使用FileInputStream读取此文件。

import java.io.FileInputStream;

public class Main {

  public static void main(String args[]) {

     try {
        FileInputStream input = new FileInputStream("input.txt");

        System.out.println("文件中的数据: ");

        //读取第一个字节
        int i = input.read();

       while(i != -1) {
           System.out.print((char)i);

           //从文件中读取下一个字节
           i = input.read();
        }
        input.close();
     }

     catch(Exception e) {
        e.getStackTrace();
     }
  }
}

输出结果

文件中的数据:
This is a line of text inside the file.

在上面的示例中,我们创建了一个名为input的文件输入流。输入流与input.txt文件链接。

FileInputStream input = new FileInputStream("input.txt");

为了从文件中读取数据,我们在while循环中使用了read()方法。

available()方法

要获取可用字节数,我们可以使用available()方法。例如,

import java.io.FileInputStream;

public class Main {

   public static void main(String args[]) {

      try {
        //假设input.txt文件包含以下文本
        //这是文件中的一行文本。
         FileInputStream input = new FileInputStream("input.txt");

         //返回可用字节数
         System.out.println("开始时可用的字节数: " + input.available());

         //从文件中读取3个字节
         input.read();
         input.read();
         input.read();

         //返回可用字节数
         System.out.println("结束时的可用字节数: " + input.available());

         input.close();
      }

      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

输出结果

开始时可用的字节数: 39
结束时的可用字节数: 36

在以上示例中,

  1. 我们首先使用available()方法检查文件输入流中的可用字节数。

  2. 然后,我们已经使用read()方法3次从文件输入流中读取3个字节。

  3. 现在,在读取字节之后,我们再次检查了可用字节。这次,可用字节减少了3。

skip()方法

要丢弃和跳过指定的字节数,可以使用skip()方法。例如

import java.io.FileInputStream;

public class Main {

   public static void main(String args[]) {

      try {
        //假设input.txt文件包含以下文本
        //这是文件中的一行文本。
         FileInputStream input = new FileInputStream("input.txt");

         //跳过5个字节
         input.skip(5);
         System.out.println("输入流跳过5个字节:");

         //读取第一个字节
         int i = input.read();
         while (i != -1) {
            System.out.print((char) i);

            //从文件中读取下一个字节
            i = input.read();
         }

         // close() 方法
         input.close();
      }
      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

输出结果

输入流跳过5个字节:
is a line of text inside the file.

在上面的示例中,我们使用了skip()方法从文件输入流中跳过5个字节的数据。因此,不会从输入流中读取表示文本“ This”的字节。

close()方法

要关闭文件输入流,可以使用close()方法。一旦close()方法被调用,我们就不能使用输入流来读取数据。

在以上所有示例中,我们都使用了close()方法来关闭文件输入流。

FileInputStream的其他方法

方法内容描述
finalize()确保close()方法被调用
getChannel()返回FileChannel与输入流关联的对象
getFD()返回与输入流关联的文件描述符
mark()标记输入流中已读取数据的位置
reset()将控件返回到输入流中设置了标记的点

Java 菜鸟教程
Java 流程控制
Java 数组
Java 面向对象(I)
Java 面向对象(II)
Java 面向对象(III)
Java 异常处理
Java 列表(List)
Java Queue(队列)
Java Map集合
Java Set集合
Java 输入输出(I/O)
Java Reader/Writer
Java 其他主题