返回
字节流:Java 中原始数据操作的基础
Android
2023-09-28 16:37:32
Java 基础(十):字节流
引言:
在上一篇文章中,我们深入探讨了字符流在 Java 中的基本操作。通过仔细检查源代码,我们发现字符流实际上是以字节流为基础实现的,每次读取两个字节来形成一个字符。
什么是字节流?
字节流,顾名思义,是一系列有序的字节。它们是 Java I/O API 的基础,用于处理原始字节数据。与字符流不同,字节流不会对数据进行任何解释或转换。
InputStream 和 OutputStream
InputStream 和 OutputStream 是 Java 中字节流操作的两个核心抽象类。
- InputStream: 表示一个字节输入流。它提供了一个方法 read() 来读取下一个字节,或 read(byte[] b) 来读取多个字节到一个字节数组中。
- OutputStream: 表示一个字节输出流。它提供了一个方法 write(byte b) 来写入一个字节,或 write(byte[] b) 来写入多个字节。
字节流的类型
根据它们的底层实现,字节流可以分为两種類型:
- 文件字节流: 用于读取和写入文件中的字节数据。最常见的实现是 FileInputStream 和 FileOutputStream。
- 管道字节流: 用于在进程之间或组件之间传递字节数据。它们通常与管道或套接字一起使用。
字节流操作
字节流的基本操作包括:
- 读取: 使用 read() 或 read(byte[] b) 从字节流中读取字节。
- 写入: 使用 write(byte b) 或 write(byte[] b) 将字节写入字节流。
- 关闭: 使用 close() 方法关闭字节流,释放系统资源。
示例代码:
让我们通过一个简单的示例来演示如何使用字节流读取和写入文件:
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ByteStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("input.txt");
FileOutputStream fos = new FileOutputStream("output.txt")) {
int b;
while ((b = fis.read()) != -1) {
fos.write(b);
}
System.out.println("File copied successfully.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上述示例中,我们使用 FileInputStream 从 input.txt 文件中读取字节。然后,我们使用 FileOutputStream 将这些字节写入 output.txt 文件。
结论:
字节流是 Java I/O API 的基石。它们用于处理原始字节数据,并提供一系列用于读取、写入和操作字节流的基本操作。了解字节流对于理解 Java 中的 I/O 操作至关重要。