BasicFileAttributes是Java NIO.2中用于跨平台读取文件基础元数据的核心接口,通过Files.readAttributes()获取,支持大小、时间戳、类型判断等;配合SimpleFileVisitor可高效批量访问;时间精度依赖底层文件系统,需注意时区与异常处理。

在Java中,BasicFileAttributes 是 NIO.2(java.nio.file.attribute)提供的核心接口之一,用于读取文件的基础元数据,比如创建时间、最后修改时间、最后访问时间、是否为目录/常规文件、大小等。它不依赖操作系统特定属性,跨平台兼容性好,是日常开发中最常用的一组文件属性。
最直接、推荐的方式是调用 Files.readAttributes() 方法,传入路径和属性类型:
Path 对象表示目标文件或目录BasicFileAttributes.class
BasicFileAttributes 实例示例代码:
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
<p>Path path = Paths.get("example.txt");
try {
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("大小: " + attrs.size() + " 字节");
System.out.println("是否为目录: " + attrs.isDirectory());
System.out.println("是否为常规文件: " + attrs.isRegularFile());
System.out.println("创建时间: " + attrs.creationTime());
System.out.println("最后修改时间: " + attrs.lastModifiedTime());
System.out.println("最后访问时间: " + attrs.lastAccessTime());
} catch (IOException e) {
e.printStackTrace();
}当需要递归处理整个目录树(如查找某天修改的文件),可结合 SimpleFileVisitor 在访问每个文件时直接获取其 BasicFileAttributes,避免重复调用 Files.readAttributes():
立即学习“Java免费学习笔记(深入)”;
visitFile() 或 preVisitDirectory() 方法BasicFileAttributes
示例片段:
Files.walkFileTree(Paths.get("src"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (attrs.isRegularFile() && attrs.size() > 1024 * 1024) {
System.out.println("大文件: " + file + " (" + attrs.size() + " 字节)");
}
return FileVisitResult.CONTINUE;
}
});BasicFileAttributes 中的时间字段(creationTime()、lastModifiedTime() 等)返回的是 FileTime 对象,它内部以纳秒精度存储,但实际精度取决于底层文件系统:
FileTime 默认按系统默认时区格式化输出,如需 UTC 或指定格式,需手动转换例如转为毫秒时间戳:
long modifiedMillis = attrs.lastModifiedTime().toMillis();
如果只需要基础信息,BasicFileAttributes 足够且轻量;若需更多细节,可选用其他视图:
DosFileAttributes:Windows 下的只读、隐藏、系统、存档标志PosixFileAttributes:Linux/macOS 下的权限(owner/group/others)、所有者、组AclFileAttributes:访问控制列表(ACL),需系统支持它们都可通过 Files.readAttributes() 获取,只需替换泛型类型即可。
基本上就这些。用好 BasicFileAttributes 能帮你快速、安全、跨平台地拿到文件关键元数据,不复杂但容易忽略细节——尤其是时间精度和异常处理。
以上就是在Java中如何使用BasicFileAttributes读取文件元数据_Java文件属性读取方式讲解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号