public class TimerDeleteFilesTask implements ITask
{
private List<FileInfo> files;
public class FileInfo
{
private String folderPath;
private String regexpFileName;
private boolean isRecursive;
/**
* 删除目录及目录下的文件
*
* @param folderPath - 文件路径
* @param regexpFileName - 匹配的后缀名称
* @param isRecursive - 是否递归删除
*/
public FileInfo(String folderPath, String regexpFileName, boolean isRecursive)
{
this.folderPath = folderPath;
this.regexpFileName = regexpFileName;
this.isRecursive = isRecursive;
}
}
/**
* 构造方法
*
* @throws IOException
*/
public TimerDeleteFilesTask() throws IOException
{
this.files = new ArrayList<FileInfo>();
String tempPath = Config.getInstance().getLogDownloadTempPath();
this.files.add(new FileInfo(tempPath, ".*.xls", true));
}
/**
* 任务执行之前
*/
public boolean beforeExecute()
{
return true;
}
/**
* 执行任务
*/
public void execute()
{
for ( FileInfo fileInfo : files )
{
// 判断是否是递归删除
if ( fileInfo.isRecursive )
{
recureDeleteFile(new File(fileInfo.folderPath), fileInfo.regexpFileName);
}
else
{
deleteFiles(fileInfo.folderPath, fileInfo.regexpFileName);
}
}
}
/**
* 任务执行之后
*/
public void afterExecute()
{
}
/**
* 查找某目录下指定扩展名的文件
*
* @param folderPath - 查找的目录路径
* @param regexpFileName-匹配文件后缀名的正则
*/
private void deleteFiles(String folderPath, final String regexpFileName)
{
File[] files = new File(folderPath).listFiles();
for ( int i = 0; i < files.length; ++i )
{
File file = files[i];
if ( file.isFile() )
{
try
{
Pattern p = Pattern.compile(regexpFileName);
Matcher m = p.matcher(regexpFileName);
if ( m.find() )
{
file.delete();
}
}
catch ( Exception e )
{
e.printStackTrace();
}
}
}
}
/**
* 递归删除路径下的指定后缀名的文件及文件夹
*
* @param path-文件路径
* @param regexpFileName-匹配文件后缀名的正则
*/
private void recureDeleteFile(File folder, String regexpFileName)
{
File[] files = folder.listFiles();
if (null == files)
{
return;
}
for ( File file : files )
{
// 判断是文件还是目录,如果是文件直接删除,如果是目录再调用本身方法递归删除
if ( file.isFile() )
{
try
{
Pattern p = Pattern.compile(regexpFileName);
Matcher m = p.matcher(regexpFileName);
if ( m.find() )
{
file.delete();
}
}
catch ( Exception e )
{
e.printStackTrace();
}
}
else
{
recureDeleteFile(file, regexpFileName);
}
}
}
@Override
public Priority getPriority()
{
return Priority.LOW;
}
}
分享到:
相关推荐
在IT领域,文件目录监控和定时删除文件是系统管理和维护中的常见任务,尤其在服务器环境和数据库备份场景中。这个工具显然设计用于自动化这个过程,确保磁盘空间的有效利用。以下是对标题和描述中涉及的知识点的详细...
- 临时文件管理:在服务器上自动清理不再使用的临时文件。 - 数据备份策略:在数据备份后,自动删除超过保留期限的旧备份。 综上所述,这个"定时删除指定目录下指定文件类型的文件 源码"是一个实用的工具,它结合...
有些第三方软件如CCleaner也提供了定时清理功能,可一键清理临时文件、系统垃圾等。 总结,定时删除文件是一个实用的IT技能,涉及到操作系统的基础知识,包括批处理、shell脚本、任务计划程序和cron等。理解并熟练...
在C#编程中,定时删除带日期的文件是一项常见的任务,尤其在日志管理、临时文件清理等场景中。为了实现这一功能,我们需要结合使用文件系统操作和定时任务。以下是一份详细的步骤和知识点解析: 1. **文件系统操作*...
《临时文件删除工具详解》 在日常的计算机使用过程中,我们常常会遇到硬盘空间不足的情况,这往往是因为系统和应用程序生成了大量的临时文件和中间文件。这些文件虽然在某些操作过程中起到重要作用,但一旦任务完成...
3. **个人电脑**:对于个人用户,定期清理临时文件、下载目录等,可以避免磁盘空间被无意识占用。 使用定时删除软件的优点包括: 1. **自动化**:解放用户手动清理文件的时间,让计算机自动处理。 2. **预防性**:...
这对于定期清理日志文件、临时文件或其他临时数据非常有用。 2. **配置文件**:配置文件`config.ini`是控制工具行为的关键。用户可以通过编辑此文件来设定要删除的文件目录(dirs)、删除依据(deltype)、保留天数...
这样的解决方案对于需要定期清理日志、备份或其他临时文件的系统非常实用,同时通过log4net提供了一定的审计和故障排查能力。通过理解和应用这些知识点,开发者可以构建出高效且可靠的文件管理系统。
在IT领域,定时清理文件夹下的文件或文件夹是一个常见的需求,特别是在系统维护、日志管理、临时数据处理等场景中。本主题将深入探讨如何使用C#编程语言实现这样的功能,并结合定时任务来自动执行删除操作。 首先,...
垃圾文件可能包括临时文件、系统日志、应用缓存、未使用的DLL文件、无效的注册表项等。这些文件在日常使用过程中逐渐积累,如果不进行定期清理,可能会导致硬盘空间紧张,甚至影响系统运行速度。自动删除工具通过...
在Web项目中,定时删除指定路径下的文件是一个常见的需求,特别是在日志管理、临时文件清理或者资源更新等场景。这个任务通常由服务器端程序来执行,以确保系统的高效运行和资源的有效利用。以下是对这个主题的详细...
2. **使用系统工具**:许多操作系统提供了内置的磁盘清理工具,如Windows的"磁盘清理"功能,它可以自动识别并删除无用的临时文件。 3. **第三方软件**:市场上有许多免费和付费的系统优化软件,如CCleaner,能够...
微信、企业微信、系统临时文件temp清理批处理,有效释放C盘空间. 温馨提示:微信缓存内有重要数据者慎用!
在开发环境中,Visual Studio(VS)作为一款强大的集成开发环境,常常在编译、调试项目时生成大量的临时文件。这些临时文件包括中间编译产物、调试信息等,它们占用硬盘空间,有时还可能导致磁盘碎片,甚至在某些...
文件清理是指通过删除不必要的文件,如临时文件、日志文件、系统缓存等,来释放硬盘空间,提高系统性能。这些无用文件长时间累积会占用大量存储资源,可能导致系统运行缓慢,甚至影响到软件的正常运行和更新。 ...
`adirname`函数用于获取给定文件的绝对路径,而`MYNAM`、`MYDIR`、`MYCFG`、`MYTMP`和`MYLCK`等变量分别保存了脚本名、脚本所在目录、配置文件路径、临时文件目录和锁定文件路径。锁定机制确保脚本不会同时运行两次...
- 文件清理策略:可以使用定时任务或者事件驱动的方式定期清理无用的临时文件,避免占用过多磁盘空间。 5. **编程语言中的实现**: - Python:`tempfile`模块提供创建临时文件和目录的功能,支持自动删除。 - ...
4. **临时文件替换**:程序可以先创建一个临时文件,将自身的内容复制到临时文件,然后删除原文件,最后再重命名临时文件为原文件名。这样,虽然文件名改变了,但程序内容仍在,且原文件已被删除。 5. **利用系统...
3. 异步删除:在某些情况下,可能需要等待一段时间后再次尝试删除,或者通过后台任务定时清理。 4. 使用强制删除:Java的`Files`类提供了`delete()`方法,可以尝试强制删除,但请注意这可能导致数据丢失。 总结,...