2011-05-20 71 views

回答

5

以下为我工作(使用Files.walkFileTree和FileVisitor的):

FILETIME的ctime =(FILETIME)Files.getAttribute(路径, “UNIX:的ctime”);

1

您可以通过调用getCreationTime()的文件属性对象来获取文件的创建时间。您可以使用Files.walkFileTreeFileVisitor执行目录树步行。把这些放在一起,你可以实现find . -ctime n

+0

创建时间和上次更改的时间不一样。 我已经试过getCreationTime(),lastAccessTime()和lastModifiedTime()。他们都没有模仿 - 时间。 – Wayne 2011-05-20 22:07:52

+1

作为另一个例子,如果我要通过getCreationTime()来排序,那么这将等同于'ls -lt',但我想要做的是'ls -ltc'排序。 – Wayne 2011-05-20 22:40:09

+0

经过进一步调查,我认为getCreationTime()被打破。 看来,getCreationTime()和lastModifiedTime()返回相同的值。 – Wayne 2011-05-21 02:50:26

2

在JDK 7个论坛有discussion opened关于这个问题

它基本上是说:

从创建时间的描述:“如果 文件系统实现不 不支持时间戳指出 的创建文件的时间 那么此方法将返回一个 实现特定的默认值, 通常是上次修改时间或文件时间代表在时代 (1970-01-01T00:00:00Z)“。因此您期望观察到的行为。 上一次状态更改的时间为 ,如果您真的需要它,请尝试 Files.getAttribute(路径, “unix:ctime”)。

所以,你自己的答案似乎是正确的。

0

下面是创建时间的Javadoc说:

如果文件系统实现不支持时间戳来指示创建的文件,则该方法返回一个实现特定的默认值,通常最后改进释放时间时间或代表纪元的FileTime(1970-01-01T00:00:00Z)。

由于创建在Unix/Linux上不典型,所以该方法返回上次修改时间。

相关问题