java - 更改文件的最后修改而不关闭它

标签 java file last-modified file-handling

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

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 会起作用。但只是想知道是否有任何其他方法来更改不关闭文件的最后修改时间。)

最佳答案

根据您实际上想要实现的目标,以下两种方法之一可能是合适的:

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

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

关于java - 更改文件的最后修改而不关闭它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714489/

相关文章:

Java - 尝试规划程序类的布局

file - 简单批处理,用于检查Internet连接并根据结果设置环境变量%internet%

c++ - 从文件中获取输入并将其保存到临时内存中?

java - 如何在 Java 中更改文件的权限和上次修改时间?

java - Android LocationManager 为纬度和经度提供 0.0

基于点注释的Java嵌套POJO更新

java - List<Integer> 递归求和

file - 如何使用 webdriver 自动上传文件。

seo - 如何在 Joomla 中自定义 Last-Modified Header?

Javascript获取网页的最后修改