【问题标题】:Java perl file delete/delete files older than n number of daysJava perl 文件删除/删除超过 n 天的文件
【发布时间】:2015-08-22 03:13:24
【问题描述】:

我正在使用 Java 6。

我正在编写一种方法,我必须删除超过 n 天的文件。 这将是管家工作,按计划运行。

最好的方法是什么?

  1. 用Java编写方法来检查和删除文件。但我认为使用 Java 我们可以获得文件创建时间。
  2. 用 perl 编写并从 Java 调用脚本。

也欢迎任何其他建议。

【问题讨论】:

    标签: java perl delete-file


    【解决方案1】:

    您可以仅从 java 中执行此操作。无需使用 perl。

    import java.io.File;
    import java.util.Calendar;
    
    public class DeleteOlderThan
    {
    
        private static long daysAgo;
    
        private static void delete(File f) {
            if (f.isDirectory()) {
                for (File l : f.listFiles())
                    delete(l);
            }
            if (f.lastModified() <= daysAgo) {
                f.delete();
            }
        }
    
        public static void main(String[] args)
        {
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.DAY_OF_MONTH, -1 * new Integer(args[1]));
            daysAgo = cal.getTimeInMillis();
    
            delete(new File(args[0]));
        }
    }
    

    运行java DeleteOlderThan /my/path days 将递归删除路径中早于几天的文件。

    【讨论】:

      【解决方案2】:

      我不会从 Java 调用 perl。没有意义。

      如果您正在运行 *nix 机器,只需 cron 执行一个 bash 命令即可。

      如果您使用的是 Windows,请使用 Java。这样的例子遍布网络。

      【讨论】:

      • 所以你的意思是可以从 java 中不使用任何额外的库?
      • @adi 我相信是的。查看 File 类。浏览样本。这些都是很常见的东西。
      【解决方案3】:

      检查 Apache Commons-IO、FileUtils,尤其是 isFileOlder(File file, Date date) 方法。这是 JavaDoc 的链接:

      http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html

      许多用于处理该类中的文件的实用方法。

      【讨论】:

        猜你喜欢
        • 2011-10-15
        • 2010-09-08
        • 2016-09-20
        • 2016-10-31
        • 1970-01-01
        • 1970-01-01
        • 2017-10-08
        • 2012-06-22
        • 1970-01-01
        相关资源
        最近更新 更多