我是否正确假设java.io.File(file).lastModified()
不会导致文件本身以任何方式加载,从而具有最小的开销?这是一个非常基本的问题,但我找不到任何有关它的好信息。
设置上次修改日期应该几乎没有任何开销吗?
如果我理解正确,这个元数据会与文件分开存储,所以如果我没有错误地读取和写入这些数据应该不会花费太多,但只是想确保我将其用作中心基础缓存机制。
根据目前为止的评论和回复,这是否意味着使用过滤器进行目录列表更具特色性?因为声音性能较低的恕我直言。
答案 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()
。