Java 获取文件元数据的开销(上次修改日期)

Java 获取文件元数据的开销(上次修改日期),java,filesystems,Java,Filesystems,我假设java.io.File(File).lastModified()不会以任何方式加载文件本身,因此开销最小,这是否正确?这是一个非常基本的问题,但是我找不到任何关于它的好信息 设置最后修改的日期也应该几乎没有开销,对吗 如果我理解正确,这个元数据是与文件分开存储的,因此如果我没有弄错的话,读取和写入这个数据应该不会花费太多,但我只是想确保,因为我将使用它作为缓存机制的中心基础 根据到目前为止的评论和回复,这是否意味着只针对我的文件使用过滤器进行目录列表更有效?因为这听起来没那么有效 ja

我假设
java.io.File(File).lastModified()
不会以任何方式加载文件本身,因此开销最小,这是否正确?这是一个非常基本的问题,但是我找不到任何关于它的好信息

设置最后修改的日期也应该几乎没有开销,对吗

如果我理解正确,这个元数据是与文件分开存储的,因此如果我没有弄错的话,读取和写入这个数据应该不会花费太多,但我只是想确保,因为我将使用它作为缓存机制的中心基础


根据到目前为止的评论和回复,这是否意味着只针对我的文件使用过滤器进行目录列表更有效?因为这听起来没那么有效

java.io.File(File)
返回一个
文件
对象。因此,文件对象被实例化

每次调用
file.lastModified()
时,它都以本机方法调用
java.io.UnixFileSystem.getLastModifiedTime(file)
结束

同样,每次你打电话都会发生这种情况


所以这是您所关心的开销部分。

抛出:SecurityException-如果存在安全管理器,并且其SecurityManager.checkRead(java.lang.String)方法拒绝对该文件的读取访问,这表明它与windows:D上的
javaxt
相同好,我还可以问一下您在哪里或如何找到该信息吗?希望下次我能自己找到:)看看
文件.lastModified()
代码。您会注意到类似于
return fs.getLastModifiedTime(这是)这里对我来说,
java.io.UnixFileSystem.getLastModifiedTime(文件)
是Linux的
文件系统
的实现,它是一种本机方法。对于其他操作系统也应该是类似的。