【问题标题】:Delete log files in java删除java中的日志文件
【发布时间】:2014-04-29 17:39:39
【问题描述】:

我想创建一个方法,该方法应递归检查 XYZ.xyz() 目录下的所有目录,以查找匹配模式“job_log_YYYYMMDDHHSS.txt”的文件。如果文件中指示的日期相对于当前日期早于 30 天,请删除该文件。

public class logCleanup extends XyzJob implements Job {

private static final int daysToRetain = 30;

private void cleanJobLogs() throws Exception {
    String LogDir = System.getProperty("user.dir") + "\\txt";

    Calendar c = Calendar.getInstance();
    if (c.get(Calendar.HOUR_OF_DAY) == 0 && c.get(Calendar.MINUTE) < 6) {
        int filesDeletedCount = 0;
        File dir = new File(LogDir);
        String[] logFileNames = dir.list();
        Calendar fileDate = Calendar.getInstance();
        Calendar cutoffDate = Calendar.getInstance();
        cutoffDate.add(Calendar.DAY_OF_MONTH, -daysToRetain);
        cutoffDate.set(Calendar.HOUR_OF_DAY, 0);
        cutoffDate.set(Calendar.MINUTE, 0);
        cutoffDate.set(Calendar.SECOND, 0);

        for (int i = 0; i < logFileNames.length; i++) {
            String fileName = logFileNames[i];
            String[] fileNameParts = fileName.split("\\.");
            if (fileNameParts.length == 3) // match log file name pattern
            {
                try {
                    // parsing file's date
                    SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMDDHHSS");
                    fileDate.setTime(sdf.parse(fileNameParts[1]));

                    // delete files older than then cutoff date
                    if (fileDate.before(cutoffDate)) {
                        File deleteFile = new File(LogDir + "\\" + fileName);
                        if (!deleteFile.delete()) {
                            log("        Unable to Delete File: " + LogDir + "\\" + fileName);
                        } else {
                            filesDeletedCount++;
                        }
                    }
                } catch (Exception e) {
                    // parse date out of filename or delete file
                }
            }
        }
    }
}

【问题讨论】:

  • 问题是什么?

标签: java file logging delete-file


【解决方案1】:
final File folder = new File("yourdirectory");
FilenameFilter fileFilter = new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
      return name.toLowerCase().endsWith("yourpattern");
    }
};

for (final File fileEntry : folder.listFiles(fileFilter)) {
     if (System.currentTimeMillis() - fileEntry.lastModified() > 2592000000L)
        fileEntry.delete();
}

【讨论】:

  • @Gere..(谢谢)这就是我阅读目录的方式.. private void cleanSmsJobLogs() throws Exception { String smsLogDir = System.getProperty("user.dir") + "\\txt ";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 2013-05-25
  • 2010-11-16
  • 2014-07-02
  • 1970-01-01
  • 2017-01-02
  • 2021-02-01
相关资源
最近更新 更多