Java IO 从入门到深入第一篇IO体系结构 File类详解在 Java 开发中IOInput / Output是一个非常核心的知识体系。几乎所有应用都会涉及 IO例如读取配置文件写日志文件上传下载网络通信数据持久化但很多初学者学习 IO 时都会遇到一个问题Java IO 类太多看起来非常混乱。例如InputStream OutputStream Reader Writer BufferedReader FileInputStream ObjectOutputStream File RandomAccessFile如果没有理解IO整体体系结构很容易学一段忘一段。一、什么是 IOIO 是Input / Output即输入 / 输出在计算机中类型含义Input从外部读取数据Output向外部写入数据例如文件 → 程序 输入 程序 → 文件 输出再比如键盘 → 程序 程序 → 屏幕本质上 IO 就是程序与外部资源之间的数据传输这些外部资源包括文件 网络 数据库 控制台 内存二、Java IO 的核心思想Java IO 的核心思想只有一句话数据以“流Stream”的方式进行传输可以理解为数据像水流一样流动示意文件 ----- 程序 InputStream 程序 ----- 文件 OutputStream因此 Java 中有两个最基础的类InputStream OutputStream三、Java IO 的体系结构Java IO 可以分为四大类。Java IO │ ├── File │ ├── 字节流 │ InputStream │ OutputStream │ ├── 字符流 │ Reader │ Writer │ └── 缓冲流 / 处理流简单理解类型作用File文件和目录操作字节流处理二进制数据字符流处理文本数据缓冲流提高 IO 性能四、为什么要区分字节流和字符流这是 Java IO 的核心设计。字节流处理二进制数据例如图片 视频 音频 压缩文件单位byte字符流处理文本数据例如txt json xml html单位char总结类型处理数据字节流二进制字符流文本五、Java IO 学习路线学习 IO 推荐顺序File ↓ 字节流 ↓ 字符流 ↓ 缓冲流 ↓ 对象流 ↓ NIO本篇先讲File 类。六、File 类是什么File是 Java IO 中最基础的类之一。作用表示文件或目录的路径注意File 不表示文件内容 只表示文件路径例如D:/test/a.txt源码publicclassFileimplementsSerializable,ComparableFile七、File 的创建创建 File 对象FilefilenewFile(test.txt);或者FilefilenewFile(D:/test/a.txt);也可以FilefilenewFile(D:/test,a.txt);注意创建 File 对象 不会创建真实文件八、创建文件创建真实文件file.createNewFile();示例importjava.io.File;publicclassMain{publicstaticvoidmain(String[]args)throwsException{FilefilenewFile(test.txt);if(!file.exists()){file.createNewFile();}}}九、创建目录创建单级目录file.mkdir();创建多级目录file.mkdirs();示例FiledirnewFile(D:/test/a/b);dir.mkdirs();十、判断文件信息File 提供了很多方法。判断是否存在file.exists();判断是否是文件file.isFile();判断是否是目录file.isDirectory();获取文件大小file.length();单位字节十一、获取文件信息获取文件名file.getName();获取路径file.getPath();获取绝对路径file.getAbsolutePath();示例FilefilenewFile(test.txt);System.out.println(file.getName());System.out.println(file.getAbsolutePath());十二、删除文件删除文件file.delete();注意删除不会进入回收站删除目录要求目录必须为空十三、列出目录内容获取目录文件列表FiledirnewFile(D:/test);File[]filesdir.listFiles();for(Filef:files){System.out.println(f.getName());}十四、File 的使用场景File 通常用于1 文件管理例如创建文件 删除文件 遍历目录2 配置文件读取例如读取 application.properties3 日志系统日志框架会使用 File 写日志。4 文件上传下载Web 系统上传文件 保存文件十五、File 常见易错点1 File 不会创建文件很多人误以为FilefilenewFile(a.txt);文件已经创建。实际上没有创建必须createNewFile()2 mkdir 与 mkdirs 区别mkdir 只能创建单级目录 mkdirs 可以创建多级目录例如a/b/c必须使用mkdirs3 delete 删除目录要求为空例如test/ a.txt执行delete()会失败。十六、IO 面试高频问题1 File 能读取文件内容吗答案不能File 只能表示路径 管理文件读取内容需要InputStream Reader2 File 和 Path 的区别Java 7 之后java.nio.file.Path更推荐使用。但很多旧项目仍使用 File。3 为什么 File 既可以表示文件又可以表示目录因为 File 本质是路径抽象而不是文件对象。十七、总结本篇主要介绍了Java IO 的整体结构。Java IO 可以分为File 字节流 字符流 缓冲流重点掌握File 的作用表示文件路径 管理文件常用方法exists() createNewFile() mkdir() mkdirs() delete() listFiles()