跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java SE 文件 IO 基础

Java SE 文件 IO 涉及 File 类操作及 I/O 流体系。内容涵盖 File 类的构造与常用方法(增删改查),I/O 流按单位、流向、角色的分类,以及字节流(InputStream/OutputStream)和字符流(Reader/Writer)的核心 API 介绍。重点讲解了 FileInputStream、FileOutputStream、FileReader、FileWriter 的构造方法与读写操作,并补充了基本使用示例,为文件数据处理提供基础参考。

全栈工匠发布于 2026/2/9更新于 2026/7/2055 浏览
Java SE 文件 IO 基础

1. File 类的使用

这里主要介绍对文件增删改查的操作,不是对文件中的内容进行增删改查

1.1 构造方法
方法说明
File(File parent, String child)根据父目录 + 孩子文件路径,创建一个新的 File 实例
File(String pathname)根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径
File(String parent, String child)根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示
1.2 常用方法
方法说明
getParent()返回 File 对象的父目录文件路径
getName()返回 File 对象的纯文件名称
getPath()返回 File 对象的文件路径
getAbsolutePath()返回 File 对象的绝对路径
getCanonicalPath()返回 File 对象的修饰过的绝对路径
exists()判断 File 对象描述的文件是否真实存在
isDirectory()判断 File 对象代表的文件是否是一个目录
isFile()判断 File 对象代表的文件是否是一个普通文件
createNewFile()根据 File 对象,自动创建一个空文件。成功创建后返回 true
delete()根据 File 对象,删除该文件。成功删除后返回 true
deleteOnExit()根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时才会进行
list()返回 File 对象代表的目录下的所有文件名
listFiles()返回 File 对象代表的目录下的所有文件,以 File 对象表示
mkdir()创建 File 对象代表的目录
mkdirs()创建 File 对象代表的目录,如果必要,会创建中间目录
renameTo(File dest)进行文件改名,也可以视为我们平时的剪切、粘贴操作
canRead()判断用户是否对文件有可读权限
canWrite()判断用户是否对文件有可写权限

2. I/O 流

I/O 是 Input/Output 的缩写。I/O 技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等。

Java 程序中,对于数据的输入/输出操作以'流(stream)'的方式进行。

java.io 包下提供了各种'流'类和接口,用以获取不同种类的数据,并通过方法输入或输出数据

2.1 I/O 流的分类
  1. 按操作数据单位不同分为:字节流 (8 bit),字符流 (16 bit)
  2. 按数据流的流向不同分为:输入流,输出流
  3. 按流的角色的不同分为:节点流,处理流
抽象基类字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter
2.2 I/O 体系

Java 的 io 流共涉及 40 多个类,实际上非常规则,都是以上述 4 个抽象基类派生的

3. 字节流

3.1 InputStream 类

InputStream 是抽象类,我们现在只关心从文件中读取,所以使用 FileInputStream 类实例化对象

  1. FileInputStream 类的构造方法
方法说明
FileInputStream(File file)通过指定的 File 对象来创建输入流。
FileInputStream(String pathname)通过指定文件的路径字符串来创建输入流。
  1. FileInputStream 类的常见方法
方法说明
int read()从输入流中读取一个字节的数据。
int read(byte[] b)从输入流中读取一定数量的字节到字节数组中,返回长度。
int read(byte[] b, int off, int len)最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返回实际读到的数量;-1 代表已经读完了
void close()关闭字节流
3.2 OutputStream 类

OutputStream 同样只是一个抽象类,要使用还需要具体的实现类。我们现在还是只关心写入文件中,所以使用 FileOutputStream 类实例化对象

  1. FileOutputStream 的构造方法
方法说明
FileOutputStream(File file)通过指定的 File 对象来创建输出流
FileOutputStream(String name)通过指定文件的路径字符串来创建输出流
  1. FileOutputStream 的常用方法
方法说明
write(int b)写入一个字节到文件。
write(byte[] b)将一个字节数组写入文件
write(byte[] b, int off, int len)从字节数组的指定位置开始,写入指定长度的字节到文件
close()关闭输出流,释放相关资源。

4. 字符流

4.1 Reader 类

FileReader 类主要用于从文件中读取字符数据。它是一个字符输入流,继承自 InputStreamReader(转换流),抽象基类为 Reader。可以通过构造方法传入文件路径来创建

  1. FileReader 的构造方法
方法说明
FileReader(File file)创建一个与指定文件对象相关联的 FileReader。
FileReader(String fileName)创建一个与指定文件路径名相关联的 FileReader
  1. FileReader 的常用方法
方法说明
int read()从输入流中读取一个字符,返回该字符的整数表示(到达文件末尾返回 -1)
int read(char[] cbuf)将字符读入数组。返回读取的长度
void close()关闭该流并释放与之关联的所有资源。
4.2 Writer 类

FileWriter 类用于将字符数据写入文件。

  1. FileWriter 的常用方法
方法说明
write(int c)写入单个字符到文件中。
write(char[] cbuf)将字符数组写入文件中。
write(String str)写入字符串到文件中。
write(String str, int off, int len)写入字符串的一部分到文件中。
flush()刷新缓冲区,将数据写入文件。
close()关闭文件并释放相关资源。

5. 使用示例

以下代码演示了如何使用 FileWriter 和 FileReader 进行基本的文件读写操作。

import java.io.*;

public class IoExample {
    public static void main(String[] args) throws IOException {
        // 写入文件
        FileWriter writer = new FileWriter("test.txt");
        writer.write("Hello World");
        writer.close();

        // 读取文件
        FileReader reader = new FileReader("test.txt");
        int c;
        while ((c = reader.read()) != -1) {
            System.out.print((char)c);
        }
        reader.close();
    }
}

注意:在实际开发中,建议使用 try-with-resources 语法自动关闭流,或使用 Buffered 缓冲流提升性能。

目录

  1. 1. File 类的使用
  2. 1.1 构造方法
  3. 1.2 常用方法
  4. 2. I/O 流
  5. 2.1 I/O 流的分类
  6. 2.2 I/O 体系
  7. 3. 字节流
  8. 3.1 InputStream 类
  9. 3.2 OutputStream 类
  10. 4. 字符流
  11. 4.1 Reader 类
  12. 4.2 Writer 类
  13. 5. 使用示例
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Spring IOC 注解进阶:@Bean 管理第三方 Bean、@Import 拆分配置与@Value 注入
  • AIOps 实践:基于 Dify+LangBot 实现飞书智能体对话机器人
  • Python 中使用 flashtext 模块进行关键词提取与替换
  • Ubuntu 部署 OpenClaw 并接入飞书机器人
  • Midjourney 结合 Photoshop 实现 AI 电商场景合成工作流
  • 前端 IndexedDB 实战指南
  • 基于FPGA的CARRY4抽头延迟链TDC延时仿真
  • Spring AI 接入 Agent Skill 实战指南
  • 微服务链路追踪实战:Zipkin 与 Sleuth 集成
  • Rust 异步编程:错误处理的艺术与实践
  • 自然语言处理在社交媒体分析中的应用与实战
  • Web 扫雷游戏项目实现与说明
  • C语言递归快速排序算法详解
  • 三维人体姿态估计的前沿算法与论文案例
  • 二分查找实战:x 的平方根与搜索插入位置解析
  • 无线联邦学习:隐私保护下的 AI 协同演进
  • Linux 基础指令与权限管理指南
  • FPGA 实现高效 FFT/IFFT 变换:IP 核优化与 Verilog 测试验证
  • Eino ADK 实战:深入理解 ChatModelAgent 的 ReAct 循环与工程化配置
  • 网络安全入门:从基础到求职的实用路径

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online