在Java中查找上次修改的文件超过24小时

时间:2014-12-01 00:48:22

标签: java date

如果目录中最新修改的文​​件超过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循环中那么我得到一个“缺少返回语句”。

有什么想法吗?

1 个答案:

答案 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

开发解决方案
相关问题