java监听器定时删除服务器上的文件(二)
2014-11-24 07:48:21
·
作者:
·
浏览: 1
File file = new File(path);
deletefiles(file);
}
/**
* 批量删除文件
*
* @param folder
*/
public void deletefiles(File folder) {
File[] files = folder.listFiles();
for (int i = 0; i < files.length; i++) {
deleteFile(files[i]);
}
}
/**
* 删除文件
*
* @param file
*/
private void deleteFile(File file) {
try {
if (file.isFile()) {
// 删除符合条件的文件
if (canDeleteFile(file)) {
if (file.delete()) {
System.out.println("文件" + file.getName() + "删除成功!");
} else {
System.out.println("文件" + file.getName()
+ "删除失败!此文件可能正在被使用");
}
} else {
}
} else {
System.out.println("没有可以删除的文件了");
}
} catch (Exception e) {
System.out.println("删除文件失败========");
e.printStackTrace();
}
}
/**
* 判断文件是否能够被删除
*/
private boolean canDeleteFile(File file) {
Date fileDate = getfileDate(file);
Date date = new Date();
long time = (date.getTime() - fileDate.getTime()) / 1000 / 60
- Integer.parseInt(RETENTION_TIME);// 当前时间与文件间隔的分钟
if (time > 0) {
return true;
} else {
return false;
}
}
/**
* 获取文件最后的修改时间
*
* @param file
* @return
*/
private Date getfileDate(File file) {
long modifiedTime = file.lastModified();
Date d = new Date(modifiedTime);
return d;
}
/**
* 格式化日期,没有用到
*/
private String formatDate(Date date) {
// SimpleDateFormat f=new SimpleDateFormat("yyyyMMdd hh:mm:ss");//12小时制
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd HH:mm:ss");//24小时制
String formateDate = f.format(date);
return formateDate;
}
/**
* 删除文件夹
*
* @param folder
*/
public void deleteFolder(File folder) {
if (folder.isDirectory()) {
File[] files = folder.listFiles();
for (int i = 0; i < files.length; i++) {
deleteFolder(files[i]);
}
// 非当前目录,删除
if (!folder.getAbsolutePath().equalsIgnoreCase(path)) {
// 只删除在30分钟前创建的文件
if (canDeleteFile(folder)) {
if (folder.delete()) {
System.out.println("文件夹" + folder.getName() + "删除成功!");
} else {
System.out.println("文件夹" + folder.getName()
+ "删除失败!此文件夹内的文件可能正在被使用");
}
}
}
} else {
deleteFile(folder);
}
}
}
web.xml中文件配置:
com.chinacreator.report.listener.ExcelTempFileListener
运行演示图:(本人更改的执行时间为23:17,方便演示)
