1 package javatest; 2 3 import java.io.File; 4 import java.util.ArrayList; 5 import java.util.regex.Pattern; 6 7 class FileUtils 8 { 9 public static void main(String[] args) 10 { 11 String dir = "C:\\Users\\hp\\Desktop\\test"; 12 13 System.out.println("递归的获取该目录下的所有文件:"); 14 for (File f : FileUtils.getFilesRecursive(dir)) 15 { 16 System.out.println(f.getAbsolutePath()); 17 } 18 19 System.out.println("递归的获取该目录下的所有子目录:"); 20 for (File f : FileUtils.getDirecotriesRecursive(dir)) 21 { 22 System.out.println(f.getAbsolutePath()); 23 } 24 25 System.out.println("删除该目录下的所有.html文件"); 26 removeFiles(dir,null); 27 System.out.println("Done."); 28 } 29 30 /*******递归的获取某个目录下的所有文件******/ 31 public static ArrayList<File> getFilesRecursive(String dir) 32 { 33 ArrayList<File> files = new ArrayList<File>(); 34 35 File targetDir = new File(dir); 36 if (targetDir.exists()) 37 { 38 for (File file : targetDir.listFiles()) 39 { 40 if (file.isFile()) 41 { 42 files.add(file); 43 } 44 else if (file.isDirectory()) 45 { 46 files.addAll(getFilesRecursive(file.getAbsolutePath())); 47 } 48 } 49 } 50 51 return files; 52 } 53 54 /*******递归的获取某个目录下的所有子目录******/ 55 public static ArrayList<File> getDirecotriesRecursive(String dir) 56 { 57 ArrayList<File> dirs = new ArrayList<File>(); 58 59 File targetDir = new File(dir); 60 if (targetDir.exists()) 61 { 62 for (File f : targetDir.listFiles()) 63 { 64 if (f.isDirectory()) 65 { 66 dirs.add(f); 67 dirs.addAll(getDirecotriesRecursive(f.getAbsolutePath())); 68 } 69 } 70 } 71 72 return dirs; 73 } 74 75 /*******删除某个目录下,文件名符合过滤条件的所有文件,然后删除空的子目录******/ 76 public static void removeFiles(String targetDir, String fileRegex) 77 { 78 ArrayList<File> files = getFilesRecursive(targetDir); 79 //没有过滤条件,则删除该目录下的所有文件和子目录 80 if (fileRegex == null||fileRegex.equals("") ) 81 { 82 //先删除所有文件. 83 for (File file : files) 84 { 85 file.delete(); 86 } 87 //由内到外删除所有空目录. 88 ArrayList<File> dirs=getDirecotriesRecursive(targetDir); 89 for (int i=0;i< dirs.size();++i) 90 { 91 dirs.get(dirs.size()-1-i).delete(); 92 } 93 } 94 else 95 { 96 //用正则表达式过滤文件名 97 Pattern pat = Pattern.compile(fileRegex); 98 for (File file : files) 99 { 100 if (pat.matcher(file.getAbsolutePath()).find()) 101 file.delete(); 102 } 103 } 104 } 105 }
时间: 2024-10-26 07:52:45