outputstream和inputstream分别是什么
时间: 2025-05-10 12:07:09 浏览: 11
### OutputStream 和 InputStream 的概念及区别
#### 输入流 (InputStream)
`InputStream` 是 Java 中用于读取数据的基础抽象类。它表示从源(如文件、网络连接或其他 I/O 设备)中读取字节序列的数据流。通过 `InputStream` 及其子类,可以从各种输入源获取数据并将其传递给程序。
常见的 `InputStream` 子类有:
- **FileInputStream**: 用于从文件中读取数据[^1]。
- **ByteArrayInputStream**: 将字节数组作为输入流。
- **ObjectInputStream**: 支持反序列化操作,即将对象从流中恢复为内存中的实例。
以下是使用 `InputStream` 的简单示例:
```java
import java.io.FileInputStream;
import java.io.IOException;
public class InputStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int data;
while ((data = fis.read()) != -1) { // 逐字节读取
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
#### 输出流 (OutputStream)
`OutputStream` 则是 Java 中用于写入数据的基础抽象类。它表示向目标(如文件、网络连接或其他 I/O 设备)发送字节序列的数据流。通过 `OutputStream` 及其子类,可以将数据从程序传输到外部设备。
常见的 `OutputStream` 子类有:
- **FileOutputStream**: 用于将数据写入文件。
- **ByteArrayOutputStream**: 将数据写入字节数组缓冲区。
- **ObjectOutputStream**: 支持序列化操作,即把对象转换成字节流以便存储或传输。
下面是使用 `OutputStream` 的例子:
```java
import java.io.FileOutputStream;
import java.io.IOException;
public class OutputStreamExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
String content = "Hello, world!";
byte[] bytes = content.getBytes(); // 转换字符串为字节数组
fos.write(bytes); // 写入字节数组
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
#### 主要区别
| 特性 | InputStream | OutputStream |
|-------------------|----------------------------------------------|---------------------------------------------|
| 数据流向 | 从外部源读取数据 | 向外部目标写入数据 |
| 抽象方法 | 提供 `read()` 方法来读取单个字节 | 提供 `write(int b)` 方法来写入单个字节 |
| 常见用途 | 文件读取、网络接收 | 文件保存、网络发送 |
此外,在实际应用中,还可以组合多个流以增强功能。例如,`SequenceInputStream` 类允许将两个或更多输入流按顺序串联在一起形成一个新的逻辑流[^2]。
---
### 总结
`InputStream` 和 `OutputStream` 都属于 Java IO 包的核心部分,分别负责处理数据的输入和输出操作。它们的设计遵循面向对象的原则,提供灵活多样的子类支持不同场景下的需求。
阅读全文
相关推荐


















