
Java中 File类(文件、目录和文件过滤器)
File 对象本身并不表示文件的实际内容。只有当 File 对象表示的路径存在对应的文件或目录时,才能通过其他方法(如 InputStream 流或 FileReader 读取器)来访问文件内容。 在开发过程中,避免直接使用 File.delete(),因为这会直接从文件系统中删除文件或目录,容易导致数据丢失。 使用 File 类中的方法时,认真检查参数是否有效,避免 runtime exception。
发布日期:2021-05-26 05:09:51
浏览次数:25
分类:精选文章
本文共 3366 字,大约阅读时间需要 11 分钟。
Java File 类简明指南
File 类概述
File 类位于 java.io 包中,实现了 Serializable 和 Comparable 接口。它用于表示文件和目录的路径信息,提供与文件和目录操作相关的基本功能,例如创建、删除、查询文件和目录,并支持序列化和比较操作。此外,File 类允许你离开操作系统依赖的环境,能够在任何操作系统上使用。
File 类的核心特性
File 对象可以表示文件或目录,但仅表示路径信息,不能直接操作文件内容。其主要功能包括:
- 获取文件和目录的基本信息。
- 创建和删除文件或目录。
- 判断文件或目录是否存在。
- 列出目录中的文件和子目录。
- 替换文件或目录的路径。
- 获取文件的属性,如是否可执行、是否可读、是否可写等。
File 类常用方法
1. 路径和名称的操作
- getAbsolutePath():返回此 File 对象表示的路径的绝对形式。
- getPath():返回此 File 对象表示的路径的路径名。
- getName():返回此 File 对象所表示文件或目录的名称。
- getParentFile():返回此 File 对象的上一个目录。
- getParent():返回此 File 对象所在文件或目录的上一个目录的路径名。
2. 文件状态检测
- canExecute():判断此 File 对应的文件是否可执行。
- canRead():判断此 File 对应的文件是否可读。
- canWrite():判断此 File 对应的文件是否可写。
- isHidden():判断此 File 对应的文件是否为隐藏文件。
- lastModified():返回此 File 对应的文件的最后修改时间。
- length():返回此 File 对应的文件的大小(单位为字节)。
3. 文件操作
- createNewFile():创建一个新的空文件。
- delete():删除文件或目录,注意:直接删除,不走回收站。
- renameTo(File dest):重命名此 File 对应的文件或目录。
- exists():判断此 File 对应的文件或目录是否存在。
4. 目录操作
- isDirectory():判断此 File 对应的对象是否为目录。
- mkdir():创建当前目录。
- mkdirs():创建当前目录及其上级目录(如果不存在)。
- list():列出此 File 对应目录中的所有文件名。
- listFiles():列出此 File 对应目录中的所有文件(返回 File 对象)。
5. 剩余方法
- lastModified():返回文件的最后修改时间。
- getFreeSpace():返回此 File 对应路径的分区未分配的空间大小。
- isFile():判断此 File 对应的对象是否为文件。
- deleteOnExit():在 JVM 停止时删除此 File 对应的文件或目录。
File 类常见用法示例
示例 1:文件路径的处理
File filePath = new File("E:/JavaSE/file01/text.txt");System.out.println("文件路径:" + file);// E:\JavaSE\file01\text.txtboolean isFile = file.isFile();System.out.println("是否为文件:" + isFile); // false// 创建新文件if (!file.exists()) { file.createNewFile(); System.out.println("新文件已创建,路径:" + file); System.out.println("是否为文件:" + file.isFile()); // true}// 获取文件长度System.out.println("文件长度:" + file.length()); // 0// 获取文件路径名System.out.println("文件路径名:" + file.getPath()); // src\com\JavaSE\file01\text.txt// 获取文件名System.out.println("文件名:" + file.getName()); // text.txt
示例 2:目录遍历
File dir = new File("E:/JavaSE/file01");System.out.println(dir.isDirectory()); // true// 列出目录中的所有文件File[] files = dir.listFiles();for (File file : files) { if (file.isDirectory()) { System.out.println("Directory: " + file); showDir(file); } else { System.out.println("File: " + file); }}// 列出目录中的所有文件名String[] strs = dir.list();System.out.println(Arrays.toString(strs)); // [., file01, ..]
示例 3:使用 FilenameFilter 过滤文件
File dir = new File("E:/JavaSE/file01");File[] filteredFiles = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return new File(dir, name).isFile() && name.endsWith(".txt") || name.endsWith(".ppt"); }});System.out.println("符合条件的文件数量:" + filteredFiles.length);for (File file : filteredFiles) { System.out.println("File: " + file.getName());}
示例 4:创建临时文件
// 创建临时文件目录File tempDir = new File("temp");if (!tempDir.exists()) { tempDir.mkdirs();}// 创建临时文件File tempFile = File.createTempFile(tempDir, "test-", ".txt");System.out.println("临时文件路径: " + tempFile.getPath()); // temp\test-XXXXXX.txttempFile.delete(); // 删除临时文件
注意事项
总结
File 类是 Java I/O 操作的基础,广泛应用于文件和目录的管理。掌握 File 类的方法,可以方便地操作文件和目录的路径信息,简化文件操作逻辑。如果需要更高级别的文件管理功能,可以参考 Java 领域的其他类和接口,如 FileSystem 或 Path 类。随着对 File 类的深入学习,你会发现它在 Java IO 操作中起到的重要作用。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月17日 20时43分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue.js学习-15-v-for循环数组内容
2019-03-17
kafka超时错误或者发送消息失败等错误,排错方式
2019-03-17
sockjs-node/info?t=1462183700002 报错解决方案
2019-03-17
网络协议和支持(一)、uuid模块
2019-03-17
numpy.frombuffer()
2019-03-17
Latex 错误集合
2019-03-17
2020年云南省专升本 - 「计算机」专业各院校招生计划
2019-03-17
浏览器打开winscp 系统错误。代码:5。 拒绝访问。
2019-03-17
Kubernetes 无法查询到并且无法删除pod实例的排查过程
2019-03-17
android中button修改不了背景颜色
2019-03-17
github 入门
2019-03-17
社区医疗app-Ui设计
2019-03-21
HTML 表单验证
2019-03-21
ubuntu System program problem detected
2019-03-21
免费好用的证件扫描仪-扫描全能王
2019-03-21
面试题5:(事务管理) ACID 是什么?
2019-03-21
10.Mybatis执行流程
2019-03-21
Http状态码
2019-03-21