跳到主要内容

Java InputStream 类

提示
  1. InputStream 类概述:Java InputStream 类是 java.io 包中的抽象超类,用于表示字节输入流,它的子类实现具体的输入功能。
  2. InputStream 的实现和子类InputStream 是抽象类,不能直接创建实例。常用子类包括 FileInputStreamByteArrayInputStreamObjectInputStream 等,用于不同类型的数据输入。
  3. InputStream 的常用方法:提供方法如 read()available()mark()reset()close() 等,用于从流读取数据、检查可用字节、标记和重置读取位置,以及关闭流。

java.io 包中的 InputStream 类是一个抽象超类,代表字节输入流。

由于 InputStream 是一个抽象类,它本身并不实用。然而,其子类可用于读取数据。

InputStream 的子类

为了使用 InputStream 的功能,我们可以使用它的子类。其中一些包括:

FileInputStream 类继承自 InputStream 类

我们将在下一个教程中学习所有这些子类。

创建一个 InputStream

为了创建一个 InputStream,我们首先必须导入 java.io.InputStream 包。一旦我们导入了包,以下是创建输入流的方式。

// 创建一个 InputStream
InputStream object1 = new FileInputStream();

这里,我们使用 FileInputStream 创建了一个输入流。这是因为 InputStream 是一个抽象类。因此我们无法创建 InputStream 的对象。

注意:我们也可以从 InputStream 的其他子类创建输入流。

InputStream 的方法

InputStream 类提供了不同的方法,这些方法由其子类实现。以下是一些常用方法:

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

示例:使用 FileInputStream 的 InputStream

以下是我们如何使用 FileInputStream 类实现 InputStream

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

这是文件中的一行文字。

让我们尝试使用 FileInputStreamInputStream 的一个子类)来读取这个文件。

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

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

// 从输入流读取字节
input.read(array);
System.out.println("从文件读取的数据:");

// 将字节数组转换成字符串
String data = new String(array);
System.out.println(data);

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

输出

文件中可用的字节:39
从文件读取的数据:
这是文件中的一行文字

在上面的例子中,我们使用 FileInputStream 类创建了一个输入流。输入流与文件 input.txt 相关联。

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

为了从 input.txt 文件中读取数据,我们实现了这两个方法。

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

想了解更多,请访问 Java InputStream(官方 Java 文档)