Java基础知识I/O流使用详解
1. I/O流概述
Java I/O流用于处理与设备(如磁盘、屏幕、键盘等)的输入和输出。在Java中,I/O流分为两个类型:字节流和字符流。字节流用于以字节为单位读取和写入数据,而字符流用于以字符为单位读取和写入数据。
I/O流被划分为四个抽象类:InputStream、OutputStream、Reader和Writer。这些抽象类和它们的子类可以用来读取和写入文件、网络套接字和其他I/O源。
2. 字节流
2.1. InputStream
InputStream是一个抽象类,它表示所有输入流的基类,它定义了从输入流中读取一个字节的基本方法。InputStream有多个默认方法,如read(byte[])、readNBytes(byte[], int, int)等,这些方法可以从输入流中读取多个字节。
以下示例展示如何从InputStream中读取数据:
try (InputStream input = new FileInputStream("test.txt")) {
int data = input.read();
while (data != -1) {
System.out.println((char) data);
data = input.read();
}
} catch (IOException e) {
e.printStackTrace();
}
2.2. OutputStream
OutputStream也是一个抽象类,它表示所有输出流的基类。OutputStream有多个默认方法,如write(byte[])、writeNBytes(byte[], int, int)等,这些方法可以将多个字节写入输出流。
以下示例展示了如何向OutputStream中写入数据:
try (OutputStream output = new FileOutputStream("test.txt")) {
String data = "Hello, World!";
byte[] bytes = data.getBytes();
output.write(bytes);
} catch (IOException e) {
e.printStackTrace();
}
3. 字符流
3.1. Reader
Reader是所有字符输入流的抽象类。它有多个默认方法,如read(char[])、readLine()等方法,用于读取字符流的数据。
以下示例展示了如何从Reader中读取数据:
try (Reader reader = new FileReader("test.txt")) {
int data = reader.read();
while (data != -1) {
System.out.println((char) data);
data = reader.read();
}
} catch (IOException e) {
e.printStackTrace();
}
3.2. Writer
Writer是所有字符输出流的抽象类。它有多个默认方法,如write(char[])、write(String)等方法,用于写入字符到输出流。
以下示例展示了如何向Writer中写入数据:
try (Writer writer = new FileWriter("test.txt")) {
String data = "Hello, World!";
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
}
4. 总结
在Java中,I/O流可用于读取和写入数据到文件、网络等。Java提供了两种类型的I/O流:字节流和字符流。字节流主要由InputStream和OutputStream组成,而字符流由Reader和Writer组成。在使用I/O流时,我们应该注意使用try-with-resources语句块避免未关闭流导致的内存泄漏。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java基础知识I/O流使用详解 - Python技术站