Java中操作文件属性最常用Files.readAttributes()一次性读取BasicFileAttributes(含创建/修改/访问时间、大小、类型等),所有平台均支持;POSIX属性需Unix系统且用PosixFileAttributes;单属性可用getAttribute(),设置属性需注意权限与文件系统兼容性。

Java 中操作文件属性最常用的是 java.nio.file.Files 和 java.nio.file.attribute 包下的工具类,核心是通过 Files.readAttributes() 或 Files.getAttribute() 获取属性,配合 PosixFileAttributes、BasicFileAttributes 等接口使用。
获取基础文件属性(创建/修改/访问时间、大小等)
所有平台都支持 BasicFileAttributes,包含最后修改时间、最后访问时间、创建时间、是否为目录/常规文件、大小等:
- 用
Files.readAttributes(path, BasicFileAttributes.class)一次性读取全部基础属性 -
lastModifiedTime()返回FileTime,可转为毫秒或格式化输出 -
size()返回字节数,对目录可能不准确(取决于文件系统)
示例:
Path p = Paths.get("demo.txt");
BasicFileAttributes attrs = Files.readAttributes(p, BasicFileAttributes.class);
System.out.println("大小:" + attrs.size() + " 字节");
System.out.println("修改时间:" + attrs.lastModifiedTime());
获取 POSIX 属性(Linux/macOS,需文件系统支持)
在类 Unix 系统上,可用 PosixFileAttributes 读取权限、所有者、组等信息:
- 调用
Files.readAttributes(path, PosixFileAttributes.class) -
permissions()返回Set,可用PosixFilePermissions.toString(permSet)转成"rw-r--r--"格式 -
owner()和group()返回UserPrincipal,通常打印为用户名(如"john")
注意:Windows 不原生支持 POSIX 属性,调用会抛 UnsupportedOperationException,建议先判断系统或捕获异常。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
读取单个属性值(更轻量,适合只查一项)
如果只需某个属性(如仅查文件大小或权限字符串),用 Files.getAttribute() 更高效:
-
Files.getAttribute(p, "basic:size")→Long -
Files.getAttribute(p, "basic:lastModifiedTime")→FileTime -
Files.getAttribute(p, "posix:permissions")→Set - 属性名格式为
"[view-name]:[attribute-name]",常见 view 有basic、posix、dos(Windows)、acl
设置文件属性(如修改时间、权限)
部分属性支持写入:
- 修改时间:
Files.setLastModifiedTime(p, FileTime.from(Instant.now())) - POSIX 权限:
Files.setPosixFilePermissions(p, EnumSet.of(OWNER_READ, OWNER_WRITE, GROUP_READ)) - DOS 属性(Windows):
Files.setAttribute(p, "dos:hidden", true)
设置前确保程序有对应权限,且目标文件系统支持该属性(例如 FAT32 不支持 POSIX 权限)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










