在 Java I/O 中,FileOutputStream
和 ObjectOutputStream
是两个不同层级的流类,它们的核心区别体现在 数据处理的类型 和 功能用途 上。以下是详细对比:
1. FileOutputStream(文件字节输出流)
核心功能
- 处理数据类型:原始字节(
byte
) - 用途:将字节数据直接写入文件(如文本、图片、二进制文件)
- 层级:基础字节流,属于
OutputStream
的直接子类
使用场景
// 示例:写入文本内容到文件
try (FileOutputStream fos = new FileOutputStream("demo.txt")) {
String text = "Hello World";
byte[] bytes = text.getBytes(StandardCharsets.UTF_8);
fos.write(bytes); // 直接写入字节数组
}
特点
- 只能处理字节或字节数组
- 不支持直接写入对象或其他复杂数据结构
- 性能高效,适合处理原始二进制数据
2. ObjectOutputStream(对象序列化输出流)
核心功能
- 处理数据类型:Java 对象(需实现
Serializable
接口) - 用途:将对象序列化为字节流后写入文件或网络
- 层级:高级处理流,需包裹在
FileOutputStream
外层使用
使用场景
// 示例:将对象序列化到文件
class Person implements Serializable {
private String name;
private int age;
// 构造函数、getter/setter...
}
try (FileOutputStream fos = new