2026-05-28 Java二进制I_O:字节流、字符流与try-with-resources

背景

借书系统之后进入了独立的I/O基础课——只做读写文件,不叠项目。

核心三层嵌套

1
2
3
4
5
6
7
8
9
try (FileInputStream fis = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr)) {

String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}

字节流 → 字符流 → 缓冲流,每一层加一项功能:

  • FileInputStream — 最底层,一个字节一个字节读
  • InputStreamReader — 把字节拼成字符,指定编码(UTF-8)
  • BufferedReader — 一次读一行,带缓冲

写文件反过来,同样的三层:

1
2
3
4
5
6
7
try (FileOutputStream fos = new FileOutputStream("output.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw)) {

bw.write("内容");
bw.newLine();
}

try-with-resources(Java 7)

try 后面加一对括号,把需要关的资源放进去。不管代码正常跑完还是中间抛异常——括号里的资源都会被自动关闭。不用手动写 close(),不会忘,不会泄露文件句柄。

和第 8 课的 try-catch 是两回事:try-catch 是兜底抓异常,try-with-resources 是自动关门。

总结

流向 字节流 字符流 缓冲流
读 FileInputStream InputStreamReader BufferedReader
写 FileOutputStream OutputStreamWriter BufferedWriter

十个名词,一节课扫完。读和写两端对称,try-with-resources 自动关门。


2026-05-28 Java二进制I_O:字节流、字符流与try-with-resources
http://example.com/2026/05/28/2026-05-28 Java二进制I_O:字节流、字符流与try-with-resources/
作者
北街
发布于
2026年5月28日
许可协议