java中file类可直接获取绝对路径、大小和最后修改时间:getcanonicalpath()比getabsolutepath()更规范但需处理ioexception;length()仅对普通文件有效且返回0不表示为空;lastmodified()返回毫秒时间戳,精度依赖系统,使用前应先调用exists()和isfile()校验。

Java 中 File 类可以直接获取文件的绝对路径、大小(字节数)和最后修改时间,无需额外依赖,但要注意几个关键细节。
获取绝对路径:用 getAbsolutePath() 或 getCanonicalPath()
getAbsolutePath() 返回当前 JVM 视角下的绝对路径(含相对符号如 ..),而 getCanonicalPath() 会解析符号链接、消除冗余路径,返回标准、唯一的绝对路径。推荐在需要稳定路径时优先用后者。
-
file.getAbsolutePath():快速但可能含../或重复/ -
file.getCanonicalPath():需处理IOException,结果更规范 - 如果文件不存在,
getCanonicalPath()仍可能成功(取决于父目录是否存在);getAbsolutePath()总是成功
获取文件大小:用 length()
length() 返回 long 类型的字节数。注意它只对**普通文件**有效 —— 目录、不存在的路径或无读取权限的文件都会返回 0,不会抛异常。务必先用 isFile() 判断。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
if (file.isFile()) { long size = file.length(); }- 返回
0不代表文件为空,可能是文件不可访问或根本不是文件 - 不支持获取文件夹总大小(需递归遍历)
获取最后修改时间:用 lastModified()
lastModified() 返回自 1970-01-01 00:00:00 UTC 起的毫秒数(long)。这是系统级时间戳,精度取决于操作系统(例如 Windows 通常为 1 秒,Linux 可达毫秒级)。
- 结果可直接传给
new Date(long)或Instant.ofEpochMilli()转为可读时间 - 同样适用于不存在的文件(返回
0),所以建议配合exists()和isFile()使用 - 修改时间由操作系统维护,Java 不主动刷新缓存,多次调用结果一致
不复杂但容易忽略判断条件 —— 实际使用中,先确认 exists() 和 isFile() 再取值,能避免多数误读。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










