1. Java IO流基础与核心概念解析
作为Java开发中最基础也最重要的API之一,IO流是每个Java开发者必须掌握的技能点。我见过太多初级开发者因为对IO流理解不透彻,导致文件操作出现各种诡异问题。让我们先从最根本的流概念说起。
IO流本质上是数据传输的通道,可以想象成一根连接数据源和目标的水管。在Java中,根据数据传输方向分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)。这里有个关键点需要注意:输入输出是相对于程序内存而言的 - 从外部读取数据到内存是输入,从内存写出到外部是输出。
流的分类体系非常清晰:
- 按数据单位:字节流(InputStream/OutputStream)和字符流(Reader/Writer)
- 按功能角色:节点流(直接操作数据源)和处理流(对现有流封装增强)
重要提示:字节流直接操作字节,适合所有类型文件;字符流内部会自动编码解码,仅适合文本文件。用错类型会导致乱码或数据损坏。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件操作基础与路径处理
在开始IO流实战前,我们必须先解决文件路径的问题。Java 7引入的NIO.2 API(java.nio.file包)提供了更现代的文件操作方式,比传统的File类更强大也更安全。
java复制Path path = Paths.get("data", "test.txt"); // 相对路径
Path absolutePath = path.toAbsolutePath(); // 绝对路径
文件基本操作示例:
java复制// 创建文件(如果不存在)
if (!Files.exists(path)) {
Files.createFile(path);
}
// 创建目录(自动创建父目录)
Path dir = Paths.get("data/sub");
Files.createDirectories(dir);
// 文件属性检查
boolean isRegularFile = Files.isRegularFile(path);
boolean isReadable = Files.isReadable(path);
避坑指南:路径分隔符应使用
File.separator或`Paths.
