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

时间:2013-04-27 19:54:34

标签: java filesystems

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

设置上次修改日期应该几乎没有任何开销吗?

如果我理解正确,这个元数据会与文件分开存储,所以如果我没有错误地读取和写入这些数据应该不会花费太多,但只是想确保我将其用作中心基础缓存机制。


根据目前为止的评论和回复,这是否意味着使用过滤器进行目录列表更具特色性?因为声音性能较低的恕我直言。

2 个答案:

答案 0 :(得分:1)

java.io.File(file)会返回File个对象。所以文件对象是实例化的。

每次调用file.lastModified()时,都会以原始方法调用java.io.UnixFileSystem.getLastModifiedTime(File)结束。

同样,每次打电话都会发生。

所以这是您担忧的开销部分。

答案 1 :(得分:0)

我不确定。根据javadoc:

  

File.lastModified() - “表示长值   文件上次修改的时间,以毫秒为单位   纪元(1970年1月1日格林威治标准时间00:00:00),如果文件确实如此,则 0L   不存在或发生I / O错误

我认为这最后一句意味着要加载的文件。您应该尝试删除该文件或将其从您在代码中编写的路径中移出,然后尝试执行File.lastModified()