File的length()和lastModified()可获取文件大小(字节)和最后修改时间戳(毫秒),但需先用exists()和isFile()校验有效性;推荐使用Files.size()和Files.readAttributes()替代以获得异常提示和更多属性。

直接通过 File 对象的 length() 和 lastModified() 方法即可获取文件大小(字节数)和最后一次修改时间戳。
获取文件大小(字节数)
length() 返回 long 类型值,单位是字节。如果文件不存在、是目录或因权限问题无法访问,该方法返回 0。
- 确保调用前用
file.exists()和file.isFile()判断有效性,避免误把目录当文件处理 - 注意:
length()不抛异常,失败时静默返回 0,需主动校验
获取最后一次修改时间戳
lastModified() 返回 long 类型毫秒值(自 1970-01-01 00:00:00 UTC 起),与 System.currentTimeMillis() 单位一致。
- 同样需先确认文件存在且可读,否则可能返回 0(不代表“1970年”,仅表示获取失败)
- 时间戳精度取决于操作系统,Windows 通常为 10ms,Linux/macOS 一般为 1 秒
简单示例代码
以下 Java 片段演示安全获取方式:
File file = new File("example.txt");
if (file.exists() && file.isFile()) {
long size = file.length(); // 字节数
long timestamp = file.lastModified(); // 毫秒时间戳
System.out.println("大小:" + size + " 字节");
System.out.println("修改时间:" + new Date(timestamp));
} else {
System.out.println("文件不存在或不是普通文件");
}
补充说明
若需更高精度或更健壮的文件属性访问(如创建时间、符号链接处理等),建议使用 java.nio.file 包中的 Files 和 BasicFileAttributes,例如:
-
Files.size(path)—— 替代file.length(),抛出明确异常 -
Files.readAttributes(path, BasicFileAttributes.class)—— 可获取最后修改、创建、最后访问等完整时间戳

















