javaIO的基础认知
路线
第一阶段:Java IO 基础认知
1. 先搞懂核心概念
- 什么是 IO:输入(Input)读数据、输出(Output)写数据
- IO 操作的核心对象:文件(File)、流(Stream)
- 阻塞 / 非阻塞、同步 / 异步的基础区别
- IO 的核心分类:字节流、字符流
2. 掌握 File 类(操作文件 / 目录)
这是 IO 的入口,必须熟练:
- 创建、删除、重命名文件 / 目录
- 判断文件类型、获取文件大小 / 路径
- 遍历文件夹(递归遍历)
第二阶段:传统 BIO(阻塞 IO)核心
Java 最基础、使用最广泛的 IO,日常开发 80% 场景都用这个。
1. 字节流(万能流,操作所有文件)
- 顶层父类:
InputStream、OutputStream - 常用实现类:
FileInputStream/FileOutputStream(文件字节流)BufferedInputStream/BufferedOutputStream(缓冲字节流,提高效率)
- 核心用法:复制文件、读取图片 / 视频 / 音频等二进制文件
2. 字符流(专门操作文本文件)
- 解决中文乱码问题,只适合读写纯文本
- 顶层父类:
Reader、Writer - 常用实现类:
FileReader/FileWriterBufferedReader/BufferedWriter(高效缓冲字符流)
- 核心用法:读取文本内容、按行读写
3. 转换流 + 打印流(解决乱码、简化输出)
InputStreamReader/OutputStreamWriter:字节 ↔ 字符转换PrintStream/PrintWriter:简化输出,常用在日志打印
4. 对象流(序列化,面试高频)
ObjectInputStream/ObjectOutputStream- 对象序列化、反序列化
Serializable接口、transient关键字
5. BIO 收尾:IO 异常处理 + 资源关闭
- JDK7+
try-with-resources自动关闭流(必学) - 避免资源泄漏
第三阶段:Java NIO
BIO 的升级版,高并发编程必备,Netty 框架的底层就是 NIO。
1. NIO 三大核心组件(必须背下来)
- Buffer(缓冲区):数据容器,替代传统流
- Channel(通道):数据传输通道,双向传输
- Selector(选择器):实现非阻塞的核心,一个线程管理多个连接
2. 基础 NIO 操作
- Buffer 的核心方法:
put()、get()、flip()、clear() - FileChannel:文件 NIO 操作(文件复制、大文件读写)
- 分散读取、聚集写入
3. 网络 NIO(重点)
ServerSocketChannel、SocketChannel- 实现非阻塞服务器、客户端
- 理解:单线程处理多个客户端连接
4. NIO 关键特性
- 非阻塞、同步、面向缓冲区
- 对比 BIO:BIO 一个连接一个线程,NIO 一个线程管理多个连接
第四阶段:Java AIO
- JDK7+ 引入,全称
Asynchronous IO - 真正的异步非阻塞,无需轮询,操作系统完成后主动通知
- 适用场景:极高并发连接
- 企业开发极少直接使用,了解原理即可,不用深入手写代码
第五阶段:IO 高级工具与实战
1. commons-io 工具包(Apache 开源,开发必用)
- 简化文件操作:
FileUtils、IOUtils - 一行代码实现文件复制、读取、写入
2. NIO.2(JDK7+ Path、Files、Paths)
- 替代老旧的
File类 - 更优雅的文件操作 API
3. 经典实战案例
- 大文件分片上传 / 下载
- 文件夹递归拷贝
- 简单聊天程序(BIO 版 + NIO 版)
- 配置文件读取、日志写入
javaIO的基础认知
一、IO 核心概念(大白话版)
1. IO 定义
I = Input输入 :从外部读数据到程序内存(读)
例:读取本地文件、读取网络请求数据
O = Output 输出:从程序内存写数据到外部(写)
例:写入本地文件、响应网络数据
2. 核心载体
- 文件 File:数据的持久化存储载体(本地磁盘文件 / 文件夹)
- 流 Stream:数据传输的管道,数据以字节 / 字符形式单向流动
3. 两大流分类(核心区分)
- 字节流
- 顶层父类:
InputStream / OutputStream - 单位:字节,万能流
- 适用:图片、视频、音频、压缩包、任意文件
- 顶层父类:
- 字符流
- 顶层父类:
Reader / Writer - 单位:字符,自带编码处理
- 适用:纯文本(txt、md、java、配置文件),解决中文乱码
- 顶层父类:
4. 同步 / 异步 & 阻塞 / 非阻塞(前置理解)
| 类型 | 核心特点 | 对应 IO 模型 |
|---|---|---|
| 同步阻塞 BIO | 等操作完成才放行,单连接单线程 | 传统文件 IO、普通网络 IO |
| 同步非阻塞 NIO | 线程不卡死,轮询等待就绪事件 | NIO/Netty 底层 |
| 异步 AIO | 系统完成操作后主动回调通知 | JDK7 AIO,极少使用 |
二、File 类 全功能实战
1. File 类作用
专门用来操作文件 / 文件夹的路径、属性、创建、删除、遍历
注意:File 只操作文件元数据,不能读写文件内容(读写需要流)
2. 三种路径写法
1 | |
3. 常用基础方法(判断 + 获取信息)
1 | |
4. 文件 / 文件夹 创建 & 删除
1 | |
5. 文件夹遍历
方式 1:简单遍历(一级目录)
1 | |
方式 2:获取 File 对象(常用)
1 | |
方式 3:递归遍历
1 | |
javaIO的基础认知
http://hanqichuan.com/2026/04/20/java的IO/javaIO的基础认知/