发布于2026-07-06 阅读(0)
扫一扫,手机访问
在Ja va里处理文件属性,如果只想查单个字段——比如文件大小或创建时间——最直接的手段就是 Files.getAttribute()。不过,用这个方法有个前提:得把 attribute name 和 view type 搞对,还得留意不同操作系统的“脾气”。
先说结论:size 和 creationTime 都属于 basic 视图,但前者跨平台很稳,后者在 Linux 上可能会“翻车”。具体怎么用?咱们拆开来看。
文件大小再常见不过了,属于 basic 视图的标配属性。技术上讲,它返回一个 long 类型,单位是字节,跨平台兼容性极好,普通权限就能读。写法也很简单:
"size",注意是字符串,不是常量。long,推荐用泛型重载避免强制类型转换的麻烦。举个例子:
Path path = Paths.get("example.txt");
long size = (long) Files.getAttribute(path, "size"); // 非泛型写法,需要转型
// 更安全一点:
long size = Files.getAttribute(path, "size", LinkOption.NOFOLLOW_LINKS);
如果你只是想拿文件大小,Files.size(path) 其实更省事——少写几个字母,逻辑也更直白。
创建时间这个字段就有点“看人下菜碟”了。它同样属于 basic 视图,但 Windows 和 macOS 上表现良好,而 Linux(比如 ext4 文件系统)往往不保存这个信息,返回的结果可能是默认值(比如 1970-01-01 那个“Unix纪元”)。
"creationTime"。FileTime,需要调用 .toInstant() 或 .toMillis() 转换成你需要的格式。LinkOption.NOFOLLOW_LINKS,避免符号链接的干扰。代码像这样:
Path path = Paths.get("example.txt");
FileTime creationTime = (FileTime) Files.getAttribute(path, "creationTime");
Instant instant = creationTime.toInstant(); // 转成标准时间点
需要提醒的是,如果你只关心最后修改时间,Files.getLastModifiedTime(path) 不仅更直观,兼容性也更好——这一刀切下去,少踩很多坑。
"fileSize" 或 "created" 这种自定义名称,Ja va 会直接抛 UnsupportedOperationException,一点情面都不讲。AccessDeniedException,路径不存在就是 NoSuchFileException,都很直白。Files.size() 和 Files.getLastModifiedTime() 在某些场景下比 getAttribute 更顺手——不是非用这个方法不可,选最合适的就行。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8