IO 与文件基础¶
够用即可。现代 Java 文件操作用 java.nio.file 的 Files / Path,别去啃老式的 InputStream/FileReader(那是历史包袱,Spring 里几乎用不到)。
核心 API¶
import java.nio.file.*;
Path file = Paths.get("target", "demo.txt");
// 写文件
Files.write(file, List.of("第一行", "第二行"), StandardCharsets.UTF_8);
// 读文件(一次全部行)
List<String> lines = Files.readAllLines(file, StandardCharsets.UTF_8);
// 追加
Files.write(file, List.of("第三行"), StandardCharsets.UTF_8, StandardOpenOption.APPEND);
★ 受检异常¶
文件操作抛 IOException(受检异常,第 11 章讲过)。要么 try/catch,要么 throws 声明。
前端人对照¶
| 场景 | 前端 | Java |
|---|---|---|
| 读文本 | fs.readFile(Node) |
Files.readAllLines |
| 写文本 | fs.writeFile |
Files.write |
| 路径 | 'a/b.txt' 字符串 |
Path 对象 |
实战提示¶
- 后端业务里,文件上传/导出会用到 IO。Spring 提供了
MultipartFile封装,底层还是这些。 - 大文件别用
readAllLines(一次性读进内存),用Files.lines()返回 Stream 流式处理。 - 编码永远显式指定 UTF-8,避免中文乱码。
完整可运行示例¶
package com.javaglm.language.ch17;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.util.Arrays;
import java.util.List;
/**
* 第 17 章 · IO 与文件基础。
* 够用即可:现代写法用 java.nio.file 的 Files / Path(别去啃老的 InputStream)。
* 注意:文件操作会抛 IOException(受检异常),必须处理。
*/
public class IoDemo {
public static void main(String[] args) throws IOException {
// 文件写到 target/ 下(避免污染源码目录)
Path file = Paths.get("target", "ch17-demo.txt");
// 1. 写文件:一行写完(Java 8 没有 List.of,用 Arrays.asList)
Files.write(file,
Arrays.asList("第一行", "第二行"),
StandardCharsets.UTF_8);
// 2. 读文件:一次读全部行
List<String> lines = Files.readAllLines(file, StandardCharsets.UTF_8);
lines.forEach(line -> System.out.println("读到:" + line));
// 3. 追加写
Files.write(file,
Arrays.asList("第三行(追加)"),
StandardCharsets.UTF_8,
StandardOpenOption.APPEND);
System.out.println("追加后总行数 = " + Files.readAllLines(file).size());
}
}
:octicons-arrow-left-16: 上一章:Stream API | 下一章:注解与反射基础