学习使用Java NIO API来获取文件的创建日期和时间。这可能对于比较文件的时间戳很有用,然后删除较旧的文件。
1.文件属性
我们可以读取文件的基本属性如下。请注意,某些属性可能不会在特定的操作系统中提供,并且返回的值将是JVM实现特定的。
我们可能会得到UnsupportedOperationException,如果给定类型的属性不受支持。
- creationTime
- lastModifiedTime
- lastAccessTime
- isDirectory
- isOther
- isRegularFile
- isSymbolicLink
- size
- unix:uid
2.使用Files.getAttribute()
getAttributes()方法使用文件属性名creationTime检索文件的创建日期和时间。
Path filePath = Paths.get("c:/temp/data.txt");
FileTime creationTime =
(FileTime) Files.getAttribute(filePath, "creationTime");
3.使用Files.readAttributes()
readAttributes()方法作为批量操作读取文件的基本属性。它需要文件路径和文件属性的类类型。例如:
- BasicFileAttributes: 表示文件系统中与文件关联的基本属性。
- DosFileAttributes: 表示在平台如DOS和Samba中的文件属性。
- PosixFileAttributes: 表示在UNIX中的文件属性。POSIX支持九个文件权限:文件所有者、同一组中的成员和其他人的读取、写入和执行权限。
BasicFileAttributes fileAttrs = Files.readAttributes(filePath, BasicFileAttributes.class);
FileTime fileTime = fileAttrs.creationTime();
3.转换为不同的时间单位
我们可以使用FileTime.to(TimeUnit)方法将文件创建时间转换为自1970年1月1日以来的另一个时间单位。
long millis = creationTime.to(TimeUnit.MILLISECONDS);
long days = creationTime.to(TimeUnit.DAYS);
同样,我们也可以使用HOURS、MINUTES、SECONDS和MICROSECONDS时间单位。
为了支持新的Java 8日期时间类,我们还可以将创建时间转换为Instant。
Instant instant = creationTime.toInstant();
4.结论
本Java教程教给我们如何使用Java NIO的Files类和方法获取文件创建时间。这些API是在Java 7中引入的,因此直到Java 6之前都没有直接获取创建时间戳的解决方案。