files.size()获取文件字节数,files.getlastmodifiedtime()获取最后修改时间戳;二者均作用于path、抛ioexception,推荐用files.readattributes批量读取以提升性能。

Files.size 和 Files.getLastModifiedTime 是 Java NIO.2 中获取文件基础元数据的两个常用方法,它们都作用于 Path 对象,无需手动打开流,简洁安全。
用 Files.size 获取文件大小(字节数)
该方法返回文件内容的字节长度,对普通文件有效;若路径不存在、是目录或无读取权限,会抛出 IOException。
示例用法:
- 直接调用:
long size = Files.size(path); - 建议配合
try-catch捕获异常,尤其在不确定文件状态时 - 注意:对符号链接默认不跟随(即返回链接文件自身大小),如需解析目标文件大小,先用
Files.readSymbolicLink或设置LinkOption.NOFOLLOW_LINKS显式控制
用 Files.getLastModifiedTime 获取最后修改时间
该方法返回一个 FileTime 实例,代表文件最后一次写入内容或属性变更的时间戳(精度取决于底层文件系统,常见为毫秒级)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
使用要点:
- 基本调用:
FileTime time = Files.getLastModifiedTime(path); - 同样可能抛出
IOException,例如路径无效或权限不足 - 如需转换为常用时间类型,可调用
toInstant()得到Instant,再转LocalDateTime或格式化输出 - 默认行为跟随符号链接;若想获取链接本身的修改时间,传入
LinkOption.NOFOLLOW_LINKS
一次获取多个属性更高效:使用 Files.readAttributes
频繁读取多个属性时,反复调用 size 和 getLastModifiedTime 会产生多次系统调用。推荐用 Files.readAttributes 一次性读取:
- 例如:
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class); - 之后可通过
attrs.size()和attrs.lastModifiedTime()获取对应值 - 避免重复 I/O,性能更好,也更符合“批量读取元数据”的语义
注意事项与常见陷阱
这两个方法都要求路径指向**存在且可访问的文件**(非目录):
- 对目录调用
Files.size()会抛出IOException(Windows 上可能返回 0,但不可靠,应避免) - 检查路径类型建议先用
Files.isRegularFile(path) - 权限问题在 Linux/macOS 下较常见,确保运行程序有对应文件的
read权限 - 时间值受系统时钟影响,跨时区或 NTP 同步偏差可能导致结果不一致,业务中慎用于精确时序判断
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










