前段时间,应项目中需要,弄了一个关于删除某个时间段的临时文件、日志文件的页面。其中简单的运用了正则表达式。不过,本小例对于一些需要删除特定文件夹下或者某个目录的文件提供一些参考,也仅仅是我的做法,其实还有别的方式,也可以改进。例如找到某个目录下的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读取指定文件中的指定内容,还深入了解了Java文件操作的基本流程、相关类库及方法的应用。这种方法不仅适用于简单的文本文件读取,还可以扩展到更复杂的文件处理场景中。...
这是一个简单的Java程序,实现根据关键字查找文件的功能: ```java import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; ...
1. **路径范围设定**:程序允许用户指定一个或多个目录作为查找范围,这通常通过命令行参数或者配置文件来实现。用户可以指定特定的硬盘分区、文件夹,甚至整个网络共享路径,以便在指定的范围内进行深度搜索。 2. ...
这个程序能够帮助用户在指定的目录下高效地找出所有重复的.java和.class文件,这对于我们理解和优化项目结构、节省存储空间至关重要。下面我们将深入探讨如何实现这样的功能,以及相关的重要知识点。 1. 文件I/O...
本文将深入探讨如何使用Java读取PDF文件,查找特定文字的位置,并在此基础上添加悬浮图片,以实现签字或盖章的功能。首先,我们需要理解PDF文档的结构以及如何在Java中操作PDF。 PDF(Portable Document Format)是...
本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好地理解和掌握这些技巧。 #### 二、基本概念 在深入讨论之前,我们需要了解几个基本概念: - **Classpath**: 是Java运行环境的一个重要...
在IT领域,编程语言是解决问题的关键工具之一,Java作为跨平台的编程语言,常用于开发各种类型的应用,包括系统安全相关的程序。这个标题为“一个用JAVA写的清除EXE病毒文件的代码”的项目,显然是利用Java来编写的...
这个类是java.io包的一部分,它提供了在文件系统中创建、删除和查找文件的能力。例如,你可以通过以下方式创建一个File对象,表示本地的HTML或txt文件: ```java File file = new File("C:\\Users\\User\\Documents...
总结一下,处理Java中的Properties文件时,关键是正确指定文件路径,以及在写入和读取时妥善管理文件流。确保关闭流并根据需要刷新,以避免数据丢失或未更新的问题。通过学习和实践这些解决方案,你将在Java应用开发...
本文将深入探讨如何使用Java代码解析指定的APK文件,从而获取其中的关键信息。 首先,理解APK文件的结构至关重要。APK是由ZIP格式封装的,所以我们可以用Java的内置库`java.util.zip`来处理它。以下是一些关键步骤...
"Java使用FilenameFilter查找出目录下指定后缀的文件示例" Java语言中,FilenameFilter是一个非常有用的类,主要用于文件遍历和查找操作。今天,我们将通过一个实例,介绍如何使用FilenameFilter查找出目录下指定...
标题提到的“在jar包中查找指定的文件是否存在工具”是一个重要的实践场景,它涉及到Java的类加载机制和资源定位。下面将详细介绍这个知识点。 首先,Java的类加载器(ClassLoader)是负责加载类到Java虚拟机(JVM...
Java 类查找小工具是一款实用程序,专为Java开发者设计,旨在简化在大量jar文件或目录中定位特定类的任务。在日常开发过程中,我们经常会遇到需要定位某个类在哪个jar包中的情况,尤其在处理依赖复杂、类库众多的...
这篇博客将带你了解Java正则表达式的简单应用,并结合两个示例文件`parse_redbend_log`和`eyesaver`进行讲解。 在Java中,正则表达式通常通过`java.util.regex`包中的类来使用,如`Pattern`和`Matcher`。`Pattern`...
首先,Java中的`String`类提供了丰富的API用于处理字符串,其中`lastIndexOf()`方法就是用来查找指定字符或子字符串在原字符串中最后出现的位置。这个方法的语法如下: ```java int lastIndexOf(int ch) int ...
标题 "Java编写一个文件查找器" 涉及的核心知识点主要集中在使用Java编程语言实现一个功能,能够在指定的目录下查找特定的文件或满足特定条件的文件。这通常涉及到文件I/O操作、文件路径处理、文件过滤以及多线程等...
在Java编程中,查找特定目录下的文件源代码是一项常见的任务,尤其在开发、测试和调试过程中。本教程将深入探讨如何使用Java API在指定目录及其子目录中搜索和处理源代码文件。以下是一些关键知识点: 1. **File类*...
5. **文件检索**:文件检索可能涉及到遍历目录结构,查找特定类型的文件或满足特定条件的文件。Java的`java.io.File`类提供了便利的方法,如`listFiles()`和`exists()`,用于实现这个功能。 6. **文件保护**:为了...
综上所述,编写一个能够复制包含多级子目录和文件的Java应用程序需要理解文件和目录操作、递归、异常处理、日期格式化以及可能的用户交互设计。通过合理组合这些知识点,可以构建出一个功能完整的目录复制工具。
这意味着用户不仅可以根据文件的完整名称来查找,还可以通过指定文件的类型(如.txt、.docx、.pdf等)进行筛选。这种灵活性让用户能更精确地定位到所需文件,特别是在处理大量同名或同类型文件时。 此外,该工具...