【问题标题】:Finding the last modified file older than 24 hours in Java在 Java 中查找超过 24 小时的最后修改文件
【发布时间】:2014-12-01 00:48:21
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: java date


    【解决方案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的解决方案

    【讨论】:

    • 感谢您的提示,但我尝试了这种方式并得到了“缺少退货声明”
    • 嗨杰罗姆,谢谢你的工作。这段代码实际上只是一个小脚本,位于现成的 Java 调度和文件夹监视程序中,因此不需要监视服务。不过感谢您的提示:)
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2015-09-09
    • 2017-04-21
    相关资源
    最近更新 更多