Java InputStream 类详解:核心方法与 FileInputStream 实战示例
Java InputStream 类
java.io 包中 InputStream 是表示字节输入流的抽象超类。不能直接实例化,其具体子类提供从文件、字节数组等读取数据的能力。
InputStream 关键子类
FileInputStream– 从磁盘文件读取字节ByteArrayInputStream– 从内存字节数组读取ObjectInputStream– 从输入流反序列化对象
本文重点讲解 FileInputStream。
创建 InputStream
导入类后实例化子类:
import java.io.InputStream;
InputStream stream = new FileInputStream("example.txt");
可替换为任意具体子类。
InputStream 核心方法
int read()– 读取单字节,返回int或-1表示流结束int read(byte[] b)– 将数据填入字节数组,返回读取字节数int available()– 返回无阻塞可读字节数void mark(int readlimit)– 标记当前位置供后续重置void reset()– 回到最近标记位置boolean markSupported()– 是否支持 mark/resetlong skip(long n)– 跳过并丢弃 n 字节void close()– 关闭流并释放资源
实战示例:用 FileInputStream 读取文件
假设 input.txt 内容:
This is a line of text inside the file.
完整程序:打开文件、报告可用字节数、读入字节数组并打印。
import java.io.FileInputStream;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
byte[] buffer = new byte[100];
try (InputStream input = new FileInputStream("input.txt")) {
System.out.println("Available bytes: " + input.available());
int bytesRead = input.read(buffer);
System.out.println("Bytes read: " + bytesRead);
String data = new String(buffer, 0, bytesRead);
System.out.println("Data read from the file:");
System.out.println(data);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出
Available bytes: 39
Bytes read: 39
Data read from the file:
This is a line of text inside the file.
演示 try-with-resources 自动关闭流。更多 API 详见 InputStream Javadoc。
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 精通 Java ArrayList:操作、方法与最佳实践
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java Scanner:读取文本、数字与复杂类型的综合指南
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除