前段时间,应项目中需要,弄了一个关于删除某个时间段的临时文件、日志文件的页面。其中简单的运用了正则表达式。不过,本小例对于一些需要删除特定文件夹下或者某个目录的文件提供一些参考,也仅仅是我的做法,其实还有别的方式,也可以改进。例如找到某个目录下的HTML、HTM文件,文件名不包含see和preview;例如找到某个目录下的文件名是由13位数字构成的xls、xlsx文件等等。下面的代码仅供参考:
package com.jushi.test;
import java.io.File;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import junit.framework.TestCase;
public class FilePatternTest extends TestCase{
/**
* 查找指定时间范围内文件
* @param endDate 截止日期
*/
public static boolean filesFinder(String strBeginDate, String strEndDate){
try{
ClassLoader cl = FilePatternTest.class.getClassLoader();
InputStream is = cl.getResourceAsStream("com/jushi/test/path.properties");
Properties props = new Properties();
props.load(is);
String htmlDir = props.getProperty("html.path");
String xlsDir = props.getProperty("xls.path");
String[] fileDir = new String[]{htmlDir, xlsDir};//此处可以设置多个特指路径
String[] filePatterns = new String[]{"[^PREVIEW,SEE].*.HTML?$", "[0-9]{13}.XLSX?$"};
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date endDate = sdf.parse(strEndDate);
Date beginDate = sdf.parse(strBeginDate);
int counter = 0;
for(int i=0; i<fileDir.length; i++){
File dir = new File(fileDir[i]);
if(dir.isDirectory()){
File[] files = dir.listFiles();
for(int j=0; j<files.length; j++){
File findFile = files[j];
String findName = findFile.getName();
Date findFileDate = new Date(findFile.lastModified());
for(int k=0; k<filePatterns.length; k++){
String keyFileName = filePatterns[k];
Pattern p = Pattern.compile(keyFileName);
if(findFile.isFile()){
Matcher matcher = p.matcher(findName.toUpperCase());
if(matcher.matches()){
if(findFileDate.before(endDate) && findFileDate.after(beginDate)){ //开始搜寻时间范围内的日志文件
//findFile.delete();//找到文件后删除
counter ++ ;
System.out.println(">>文件名称:" + findFile.getPath());
}
}
}
}
}
}
}
System.out.println("共找到:" + counter + " 个文件!");
return (counter >0);
}catch(Exception e){
e.printStackTrace();
return false;
}
}
public void test(){
assertEquals(true, filesFinder("2011-01-01 00:00:00", "2011-04-07 23:59:59"));
}
public static void main(String as[]){
junit.textui.TestRunner.run(FilePatternTest.class);
}
}
测试结果可以查看控制台输出信息。以上的方法仅供参考,大体思路就是通过正则查找文件,其实也没什么技术含量。大家如果有什么更好的方法可以贴出来,欢迎各位拍砖。
分享到:
相关推荐
内容概要: 这段代码是一个Java小工具,名为 "FileScanner",用于递归扫描指定目录下的所有文件和文件夹,并输出文件信息,如文件名、路径、大小和最后修改时间。 适用人群: 适用于需要快速了解指定目录下文件和...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
该图片管理小程序是一款基于 Java 开发的简单应用程序,用于管理本地计算机中的图片文件。用户可以使用该程序浏览、上传、下载和删除图片文件,也可以对图片文件进行重命名和查找操作。该程序具有简单易用、功能实用...
做项目时,要在原有项目的基础增加国际化版本,查找和替换中文成了必做的工作,为了加快工作速度,所有的重复性工作都交给程序来处理,自己只做核心工作,经过自己的编码和实践应用,写了一套配合自己工作的程序,...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
内容概要: 这段代码是一个复杂的Java工具,名为 "FileComparator",用于比较两个文本文件的内容,找出差异并报告差异信息。 适用人群: 适用于需要在不同文本文件之间进行内容比较的程序员、开发人员、测试人员和...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...