如何检测文件是否已使用lastModified()

时间:2019-02-21 19:55:25

标签: java

我知道我可以使用lastModified()来获取文件的最后修改时间。我不明白的是,如何使用这种方法来检测文件是否已更改。我可以将其与当前时间进行比较吗? 我正在尝试执行以下操作,但我认为它不起作用

long time = xx.lastModified();
if(time != localtime)
//.....

2 个答案:

答案 0 :(得分:0)

对于这个问题有很多解决方案,我知道这一点: 对于单个文件,将启动一个线程以检查lastModified值并将其与先前的值进行比较。

   col1  
 0   1 
 1   2
 3   1
 4   2

这是测试的主要内容:

import java.util.*;
import java.io.*;

public abstract class FileWatcher extends TimerTask {
  private long timeStamp;
  private File file;

  public FileWatcher( File file ) {
  this.file = file;
  this.timeStamp = file.lastModified();
}

public final void run() {
  long timeStamp = file.lastModified();

  if( this.timeStamp != timeStamp ) {
    this.timeStamp = timeStamp;
    onChange(file);
  }
}

protected abstract void onChange( File file );
}

答案 1 :(得分:0)

如果您要确定某个文件是否比您确实修改过,则不必检索上次修改时间。 Java NIO具有inotify的{​​{1}}(在Linux上)包装器 https://docs.oracle.com/javase/tutorial/essential/io/notification.html

您可以在感兴趣的文件上注册WatchService事件,然后等到相关的监视键发出信号。

请注意,在Linux中,我们比Java NIO提供的事件种类更多。例如,发生写入或更改属性时将触发ENTRY_MODIFY。 constast的ENTRY_MODIFY为此分别设置了事件类型:intofiyIN_ATTRIB