文件的最后修改时间只有在文件关闭时才会改变。
public class Main {
public static void main(String[] args) throws IOException {
File f = new File("xyz.txt");
FileWriter fwr = new FileWriter(f);
System.out.println(f.lastModified());
fwr.write("asasdasdasd");
System.out.println(f.setLastModified(System.currentTimeMillis()));
fwr.flush();
System.out.println(f.lastModified());
fwr.close();
System.out.println(f.lastModified());
System.out.println(f.setLastModified(System.currentTimeMillis()));
}
}
现在,在我的实际程序中,打开了一个文件,其中一个线程继续写入该文件。其他几个线程需要知道最后一次将任何数据写入文件的时间。
有没有什么方法可以在不关闭文件的情况下更新上次修改时间?
(我知道,在写入文件的线程中有一个 static
变量 - long lastWriteTime
会起作用。但只是想知道是否有任何其他方法来更改不关闭文件的最后修改时间。)
最佳答案
根据您实际上想要实现的目标,以下两种方法之一可能是合适的:
- 使用
File.setLastModified()
直接操作时间戳或 - 使用
f.flush()
确保所有写入的数据都实际写入磁盘。
请注意,操作系统和/或文件系统对该时间戳的解析度可能比您希望的要低。例如,FAT 以 2 秒的分辨率存储这些时间戳!众所周知,更现代的文件系统只能以一秒的分辨率存储。
另请注意,最后修改时间戳的行为因操作系统而异。例如,在我的 Ubuntu 上,只有 write
/flush
修改时间戳,close()
不会!
关于java - 更改文件的最后修改而不关闭它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714489/