2

文件的最后修改时间只有在文件关闭时才会改变。

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在写入文件的线程中会起作用。但只是想知道是否有任何其他方法,可以在不关闭文件的情况下更改上次修改时间。)

4

3 回答 3

2

根据您实际想要实现的两种方法之一可能是合适的:

请注意,操作系统和/或文件系统的时间戳分辨率可能比您希望的要低。例如,FAT 以 2 秒的分辨率存储这些时间戳!众所周知,更现代的文件系统仅以一秒的分辨率存储。

另请注意,最后修改时间戳的行为因操作系统而异。例如,在我的 Ubuntu 上,只有write/flush修改了时间戳,close() 没有

于 2011-04-19T09:50:26.453 回答
2

请记住,您看到的行为高度依赖于操作系统,也许还有文件系统类型。因此,java 不能也不指定何时更新文件时间。因此,不,在 java 中没有可移植的方法来做到这一点。

于 2011-04-19T09:52:36.717 回答
0

使用 setLastModified() 怎么样?

于 2011-04-19T09:52:41.817 回答