Java IO流
介绍
在Java中,IO流(Input/Output Stream)是处理输入和输出的核心机制。无论是从文件读取数据,还是将数据写入文件,IO流都扮演着重要的角色。Java的IO流分为两大类:字节流和字符流。 字节流以字节为单位处理数据,而字符流则以字符为单位处理数据。
字节流 vs 字符流
- 字节流:适用于处理二进制数据,如图片、音频、视频等。主要类包括
InputStream
和OutputStream
。 - 字符流:适用于处理文本数据,如读取或写入文本文件。主要类包括
Reader
和Writer
。
字节流
InputStream 和 OutputStream
InputStream
是所有字节输入流的父类,而 OutputStream
是所有字节输出流的父类。以下是它们的基本用法:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("input.txt");
FileOutputStream fos = new FileOutputStream("output.txt")) {
int data;
while ((data = fis.read()) != -1) {
fos.write(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
输入文件 input.txt
内容:
Hello, World!
输出文件 output.txt
内容:
Hello, World!
备注
try-with-resources
语句确保流在使用后自动关闭,避免了资源泄漏。
字符流
Reader 和 Writer
Reader
是所有字符输入流的父类,而 Writer
是所有字符输出流的父类。以下是它们的基本用法:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CharStreamExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("input.txt");
FileWriter fw = new FileWriter("output.txt")) {
int data;
while ((data = fr.read()) != -1) {
fw.write(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
输入文件 input.txt
内容:
Hello, World!
输出文件 output.txt
内容:
Hello, World!
提示
字符流更适合处理文本数据,因为它们会自动处理字符编码问题。