仅在文件关闭时才更改文件的上次修改时间。
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
会起作用。但只是想知道是否有其他方法,在不关闭文件的情况下更改上次修改时间。)
答案 0 :(得分:2)
根据您实际想要实现的目标,可能适合以下两种方法之一:
File.setLastModified()
直接操作时间戳或f.flush()
确保写入的所有数据都实际写入磁盘。请注意,操作系统和/或文件系统的时间戳分辨率可能低于您希望的分辨率。例如,FAT以2秒的分辨率存储这些时间戳!已知更现代的文件系统只能以一秒的分辨率存储。
另请注意,上次修改时间戳的行为会因OS而异。例如,在我的Ubuntu上,只有write
/ flush
修改时间戳,close()
不会!
答案 1 :(得分:1)
请记住,您看到的行为高度依赖于操作系统和文件系统类型。因此,java不能也不会指定何时更新文件时间。因此,不,在java中没有可移植的方法。
答案 2 :(得分:0)
使用setLastModified()?