更改文件的上次修改而不关闭它

时间:2011-04-19 09:46:18

标签: 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会起作用。但只是想知道是否有其他方法,在不关闭文件的情况下更改上次修改时间。)

3 个答案:

答案 0 :(得分:2)

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

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

另请注意,上次修改时间戳的行为会因OS而异。例如,在我的Ubuntu上,只有write / flush修改时间戳,close() 不会

答案 1 :(得分:1)

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

答案 2 :(得分:0)

使用setLastModified()?