如果目录中最新修改的文件超过24小时,我想发送警报。我使用了这两个问题的提示:
How do I find the last modified file in a directory in Java?
Changing Java Date one hour back
并提出:
File dir = new File("/path/to/dir");
File[] files = dir.listFiles();
if (files.length == 0) {
return null;
}
File lastModifiedFile = files[0];
for (int i = 1; i < files.length; i++) {
if (lastModifiedFile.lastModified() < files[i].lastModified()) {
Date modifiedDate = new Date(files[i].lastModified());
return modifiedDate;
}
}
Date currentDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(currentDate);
cal.add(Calendar.HOUR, -24);
Date alertDate = cal.getTime();
if (modifiedDate.before(alertDate)){
return true;
} else {
return false;
}
但是我得到了一个“找不到符号”的ModifiedDate。我意识到它因为在最后一个if语句中看不到modifiedDate但是如果我把它和alertDate放在最初的for循环中那么我得到一个“缺少返回语句”。
有什么想法吗?
答案 0 :(得分:1)
你是否尝试过如下;
public static boolean getLastModified() throws IOException{
File dir = new File("C:\\temp\\lot_of_files\\logs");
File[] files = dir.listFiles();
if (files.length == 0) {
throw new IOException("No files to monitor in the dir");
}
Date modifiedDate = null;
File lastModifiedFile = files[0];
for (int i = 1; i < files.length; i++) {
if (lastModifiedFile.lastModified() < files[i].lastModified()) {
modifiedDate = new Date(files[i].lastModified());
}
}
Date currentDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(currentDate);
cal.add(Calendar.HOUR, -24);
Date alertDate = cal.getTime();
if (modifiedDate != null && modifiedDate.before(alertDate)){
return true;
} else {
return false;
}
}
此代码是短期的。我个人会根据Java WatchService
开发解决方案