【发布时间】: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