按正则表达式过滤符合条件的文件或文件夹的工具类
2011-01-26 15:26
525 查看
import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class FilesFilter { // 用于缓存文件列表 @SuppressWarnings("unchecked") private ArrayList files = new ArrayList(); // 用于承载文件路径 private String _path; // 用于承载未合并的正则公式 private String _regexp; // 文件过滤器 class MyFileFilter implements FileFilter { public boolean accept(File file) { try { Pattern pattern = Pattern.compile(_regexp); // 文件夹不过滤掉 if (file.isDirectory()) return true; Matcher match = pattern.matcher(file.getName()); return match.find(); } catch (Exception e) { return false; } } } // 文件名过滤器 class MyFilenameFilter implements FilenameFilter { public boolean accept(File dir, String name) { try { Pattern pattern = Pattern.compile(_regexp); File file = new File(dir.getPath() + name); // 文件夹过滤掉 if (file.isDirectory()) return false; return pattern.matcher(name).find(); } catch (Exception e) { return false; } } } FilesFilter() { } /** * 分析文件名并加入files * * @param input */ @SuppressWarnings("unchecked") private void getFile(String path, String regexp) { // 目录 _path = path; _regexp = regexp; File directory = new File(_path); File[] filesFile = directory.listFiles(new MyFileFilter()); if (filesFile == null) return; for (int j = 0; j < filesFile.length; j++) { if(filesFile[j].isDirectory()) { //递归获取子目录中符合条件的文件 getFile(filesFile[j].getAbsolutePath()+"//",_regexp); } else { files.add(filesFile[j]); System.out.println(filesFile[j].getPath()+filesFile[j].getName()); } } return; } private void getFileNames(String path, String regexp) { // 目录 _path = path; _regexp = regexp; File directory = new File(_path); String[] filesFile = directory.list(new MyFilenameFilter()); for (String s : filesFile) { System.out.println(s); } } public static void main(String[] args) { FilesFilter fa = new FilesFilter(); //过滤e盘中已jar和zip为扩展名的文件 fa.getFileNames("E:", "[//s//S]*.(sql)$"); System.out.println("----------------------------------"); fa.getFile("E:", "[//s//S]*.(sql)$"); } }
相关文章推荐
- 递规篇历路径之 使用正则过滤( 将符合正则的名称用另种正则格式替换掉 )某个路径下的所有文件或文件夹的完整路径
- 获得某个文件夹下的符合正则表达式的文件地址
- 3对符合条件的文件和文件夹进行复制或修改
- CMD命令 (复制、移动、重命名) (文件夹、子文件夹)下所有符合条件的文件
- 利用java语言获得某个文件夹下符合条件的所有文件
- 用C#通过正则表达式截取字符串中符合条件的子字符串
- JAVA正则表达式过滤文件的实现方法
- 如何使用 awk 和正则表达式过滤文本或文件中的字符串
- 读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组 -- 基于node的一个函数
- 读取文件夹 符合条件的文件
- 利用正则表达式匹配所有符合条件的子串
- awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串
- 如何是获取一个文件夹里所有以.java结尾文件的数目,并把符合条件的文件名写到一个目录下。
- 用正则表达式验证控件过滤fileupload控件上传文件类型
- 利用正则表达式统计某个某个文件夹下所有java文件的 空格行数、注释行数、和代码行数
- 根据条件,过滤符合条件的文件(使用了一个开源了ant.jar包)
- 关于ultraedit的使用,利用正则表达式过滤有用信息到新的文件中
- java 从指定文件夹搜索符合条件的文件
- Python练习代码 -- 字符串和正则表达式, 文件文件夹操作
- 正则表达式RegularExpression(从字符串中获取想要的部分,判断给定的字符串是否符合正则表达式的过滤逻辑)