Skip to content

Java IO 与 NIO

本页保留为旧链接兼容页。IO/NIO 已经从 Java 基础页中独立成完整课程目录,后续请优先阅读:

为什么要独立出来

IO/NIO 不是一个小 API 点。它会影响文件导入导出、上传下载、Socket 通信、HTTP 调用、Netty、JVM 直接内存、线程池阻塞和线上排查。

mermaid
flowchart TD
    A["IO基础"] --> B["字节流 / 字符流"]
    B --> C["缓冲 / 编码 / 资源关闭"]
    C --> D["NIO Buffer / Channel"]
    D --> E["Selector 多路复用"]
    E --> F["Netty / Reactor"]
    C --> G["大文件 / OOM / 文件句柄排查"]

快速标准回答

Java IO 用来处理文件、网络、内存中的数据读写。传统 IO 面向流,通常是同步阻塞模型,代码简单但连接多时线程成本高。NIO 面向 Buffer 和 Channel,网络 Channel 可以配置成非阻塞,再配合 Selector 实现一个线程监听多个连接事件。日常文件读写要注意缓冲、UTF-8 编码、try-with-resources 和大文件分块;高并发网络服务一般使用 Netty 而不是手写复杂 NIO。