我想知道什么类型的编程行为被视为“修改”java中的文件。也就是说,我可能对文件执行哪些操作会导致file.lastModified()调用更改它的值?
即。开幕式?读?写作?复制?写作是一个明显的触发器,但其他的并不那么明显。我已经做了一些在线环顾,没有立即看到任何东西。
澄清:我没有设置上次修改时间,我只是试图确定java程序可能参与的编程行为会导致此值更新。显然写入文件会这样做。但还有其他案例导致这种情况吗?
答案 0 :(得分:0)
阅读取决于开放,复制取决于阅读。写入是设置“上次修改”标记的唯一触发器。在大多数操作系统中打开文件后,您需要指定要打开文件的模式。例如rw
或r
或w
或a
(追加)等(依赖于实施/操作系统)。由于a
包含w
,w
是唯一可以设置上次修改标记的操作。
Java类(例如FileInputStream
)将打开指定r
或“read”的文件 - 这样就不会触发LastModified标记。 Java为读者和作者提供了不同的类 - 输入和输出。输入/阅读器类(Reader
,InputStream
)不会设置LastModified标记。但是,一个简单的Open-For-Write(没有实际写入)很可能也会触发LastModified标记,即:
new FileOutputStream( new File( "path/to/file.extension" ) );
很可能会触发LastModified集。
问候。