Java InputStream 类

InputStream 是一个抽象超类,定义了按字节处理输入数据的操作。在本教程中,我们将借助示例了解 Java InputStream 类及其方法。

在本教程中,我们将借助示例了解 Java InputStream 类以及使用方法。

InputStream 类位于 java.io 包,它是一个抽象超类,表示字节输入流,定义了按字节处理输入数据的操作。

InputStream 的子类

由于 InputStream 是一个抽象类,并不能直接使用。 Java 提供了 InputStream 的几个子类分别处理不同类型的数据。 InputStream 的子类有:

Java InputStream 子类是 FileInputStream、ByteArrayInputStream 和 ObjectInputStream
Java InputStream 类

创建一个输入流

我们使用 FileInputStream 类创建一个 InputStream 对象。

InputStream object1 = new FileInputStream();

FileInputStreamInputStream 都位于 java.io 包中。

我们还可以使用 InputStream 的其他子类创建输入流。

InputStream 的方法

InputStream 类定义了按字节处理输入数据的各种方法。以下是一些常用的方法:

  • read() - 从输入流中读取一字节数据
  • read(byte[] array) - 从流中读取字节并存储在指定的数组中
  • available() - 返回输入流中可用的字节数
  • mark() - 标记输入流中数据已被读取的位置
  • reset() - 将控制返回到设置标记的流中的点
  • markSupported() - 检查输入流是否支持 mark()reset() 方法
  • skips() - 从输入流中跳过并丢弃指定数量的字节
  • close() - 关闭输入流

示例: FileInputStream

以下示例,我们演示了如何使用 FileInputStream 类来从文件中读取数据。

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

This is a line of text inside the file.

让我们使用 InputStream 的子类 FileInputStream 读取文件:

import java.io.FileInputStream;
import java.io.InputStream;

public class Main {
  public static void main(String args[]) {

    byte[] array = new byte[100];

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

      System.out.println("文件中的字节数: " + input.available());

      // Read byte from the input stream
      input.read(array);
      System.out.println("文件中的内容: ");

      // 将字节转为字符然后输出
      String data = new String(array);
      System.out.println(data);

      // 关闭流
      input.close();
    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

输出

文件中的字节数: 39
文件中的内容:
This is a line of text inside the file

在上面的示例中,我们使用 FileInputStream 类创建了一个输入流。通过 FileInputStream 的构造方法将输入流与文件 input.txt 建立了联系。

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

为了从 input.txt 文件中读取数据,我们使用了这两种方法。

input.read(array);  // 从输入流中读取数据
input.close();      // 关闭输入流