我知道我可以使用lastModified()来获取文件的最后修改时间。我不明白的是,如何使用这种方法来检测文件是否已更改。我可以将其与当前时间进行比较吗? 我正在尝试执行以下操作,但我认为它不起作用
long time = xx.lastModified();
if(time != localtime)
//.....
答案 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
为此分别设置了事件类型:intofiy
和IN_ATTRIB
。