IO(Input/Output)流用于处理程序的数据输入和输出。
Java 中的 IO 以“流”的形式来处理数据的传输,本质是一组用于读/写数据的类。
IO流按数据类型分为:字节流和字符流。
类型 | 抽象基类 | 说明 |
---|---|---|
字节流 | InputStream / OutputStream |
处理所有类型数据(文本、图片、视频等) |
字符流 | Reader / Writer |
专门用于处理文本数据(字符) |
今天我们主要学习字符流中的Reader和Writer。
在 Java 中,Reader和Writer是用于字符流处理的两个核心抽象类,属于 java.io 包,专门用来处理 文本文件(字符数据) ,而不是字节(如图片、视频)。
写入文件代码示例:
import java.io.FileWriter;
import java.io.IOException;
public class WriterExample {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("output.txt")) {
writer.write("你好,Java字符流!\n");
writer.write("这是第二行。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
读取文件代码示例:
import java.io.FileReader;
import java.io.IOException;
public class ReaderExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("output.txt")) {
int c;
while ((c = reader.read()) != -1) {
System.out.print((char) c); // 强制转换为字符输出
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
其中,需要注意文件的相对路径和绝对路径。如果在 Java 中尝试读取或写入一个目录下的文件,但目录还不存在,需要先创建目录,否则会抛出FileNotFoundException或IOException,而当写入文件不存在时,会自动创建文件并写入内容,无需额外操作。
其常见子类如下
类名 | 类型 | 说明 |
---|---|---|
FileReader |
Reader |
读取字符文件(只能读取) |
FileWriter |
Writer |
写入字符文件(只能写) |
BufferedReader |
Reader |
缓冲读取,支持 readLine() |
BufferedWriter |
Writer |
缓冲写入,支持 newLine() |
PrintWriter |
Writer |
类似 System.out ,可格式化写入字符串(最常用) |
以上就是对Java-IO流中的Reader和Writer类的学习,如有错误,欢迎指正!