CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Java 核心深化/课时/I/O 与 NIO
RawBlame
课时目录12 节

Java 核心深化

  1. 01Java 核心地图
  2. 02类型与变量
  3. 03控制流
  4. 04类与对象
  5. 05抽象与接口
  6. 06集合框架
  7. 07Lambda 与 Stream
  8. 08并发基础
  9. 09I/O 与 NIO
  10. 10构建工具
  11. 11测试与 JUnit
  12. 12综合练习

I/O 与 NIO

i-o-operations、file-operations。

30 分钟

I/O 与 NIO

读写配置文件、日志与课时 Markdown 离不开 I/O。java-fundamentals 可能已碰过 File——本课系统讲 字节流/字符流、try-with-resources 与 NIO Path/Files。

学习目标

  • 区分 InputStream/OutputStream 与 Reader/Writer
  • 用 try-with-resources 自动关闭资源
  • 使用 java.nio.file 读写文本与遍历目录

经典 IO:流

// 读文本:字符流 + 缓冲
try (BufferedReader reader = Files.newBufferedReader(
        Path.of("content/lesson.md"), StandardCharsets.UTF_8)) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}

// 写文本
try (BufferedWriter writer = Files.newBufferedWriter(
        Path.of("out/summary.txt"), StandardCharsets.UTF_8)) {
    writer.write("jvc-io done");
}
类型单位典型类
字节流byteInputStream / OutputStream
字符流char(处理编码)Reader / Writer
缓冲减少系统调用BufferedReader / BufferedWriter

文本用字符流并指定 Charset;二进制(图片、序列化)用字节流。

try-with-resources

try (InputStream in = new FileInputStream("data.bin")) {
    in.readAllBytes();
} // 自动 close,即使抛异常

实现 AutoCloseable 的资源都可放在 try 头;多个资源用分号分隔。避免手动 finally 里 close 漏写。

NIO Path 与 Files

Path root = Path.of("content/课程/java-core-essentials/drafts");
Files.list(root)
    .filter(p -> p.toString().endsWith(".md"))
    .forEach(System.out::println);

String content = Files.readString(root.resolve("jvc-io.md"));
Files.writeString(Path.of("out/copy.md"), content);
  • Path 替代 File,API 更一致
  • Files.readString / writeString(JDK 11+)适合中小文件
  • 大文件用 Files.newInputStream + 缓冲分块读

与构建/测试的关系

Gradle/Maven 把 src/main/resources 打进 classpath(见 );测试里常用 写临时文件(见 )。

jvc-build
@TempDir
jvc-test

练习

  • 统计某目录下 .md 文件总字节数
  • 用 try-with-resources 复制文本文件
  • 读 UTF-8 文件,打印行数

小结

文本字符流、二进制字节流;Path/Files 是现代文件 API 首选。 下一课 Gradle 与 Maven 构建工具。

加载本节练习…
← 上一课并发基础下一课 →构建工具