筛选指定文件夹下的特定类型目录


1
import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileOutputStream; 4 import java.io.InputStream; 5 import java.util.ArrayList; 6 import java.util.Iterator; 7 import java.util.List; 8 9 public class FileUtils { 10 11 /*public static void main(String[ ] args){ 12 String dirName="D:\often"; 13 List fileTypes=new ArrayList(); 14 fileTypes.add("doc"); 15 Iterator iterator= getAllFilePathByDir_FilterByFileType(dirName, fileTypes).iterator(); 16 while(iterator.hasNext()){ 17 System.out.println(iterator.next()); 18 } 19 20 }*/ 21 22 public static List<String> getAllFilePathByDir_FilterByFileType(String dirName,List<String> fileTypes){ 23 String localClassFilePath = FileUtils.class.getResource("/").getPath(); 24 //System.out.println(localClassFilePath); 25 String contextFilePath = localClassFilePath.substring(1, localClassFilePath.length()-16); 26 contextFilePath = contextFilePath.replace("/", "\"); 27 //System.out.println(contextFilePath); 28 List<String> filePathList = new ArrayList<String>(); 29 for (int index = 0; index < fileTypes.size(); index++) { 30 fileList = new ArrayList<String>(); 31 List arrayList = FileUtils.getListFiles(dirName, fileTypes.get(index), true); 32 if (arrayList.isEmpty()) { 33 System.out.println("没有符号要求的文件"); 34 }else{ 35 String message = ""; 36 message += "符号要求的文件数:" + arrayList.size(); 37 System.out.println(message); 38 for (Iterator i = arrayList.iterator(); i.hasNext();) { 39 String temp = (String) i.next(); 40 temp = temp.replace(contextFilePath, "");//把根路径去掉 41 System.out.println(temp); 42 filePathList.add(temp); 43 message += temp + "/r/n"; 44 } 45 } 46 } 47 for (int replaceIndex = 0; replaceIndex < filePathList.size(); replaceIndex++) { 48 filePathList.set(replaceIndex, filePathList.get(replaceIndex).replace("\", "/")); 49 } 50 return filePathList; 51 }
52 public static List<String> fileList = new ArrayList<String>(); 53 54 /** 55 * @param path 56 * 文件路径 57 * @param suffix 58 * 后缀名 59 * @param isdepth 60 * 是否遍历子目录 61 * @return 62 */ 63 public static List getListFiles(String path, String suffix, boolean isdepth) { 64 File file = new File(path); 65 return FileUtils.listFile(file, suffix, isdepth); 66 } 67 68 public static List listFile(File f, String suffix, boolean isdepth) { 69 // 是目录,同时需要遍历子目录 70 if (f.isDirectory() && isdepth == true) { 71 File[] t = f.listFiles(); 72 for (int i = 0; i < t.length; i++) { listFile(t[i], suffix, isdepth); } 73 } else { 74 String filePath = f.getAbsolutePath(); 75 if (suffix != null) { 76 int begIndex = filePath.lastIndexOf(".");// 最后一个.(即后缀名前面的.)的索引 77 String tempsuffix = ""; 78 // 防止是文件但却没有后缀名结束的文件 79 if (begIndex != -1){ tempsuffix = filePath.substring(begIndex + 1, filePath.length()); } 80 if (tempsuffix.equals(suffix)) { fileList.add(filePath); } 81 } else { // 后缀名为null则为所有文件 82 fileList.add(filePath); 83 } 84 } 85 return fileList; 86 } 87 }

 "dirName"位要筛选的文件路径,fileTypes集合里面添加要获得的类型,可以同时筛选多个类型,例如筛选出“java”和“class”类型,只需要将这两个元素添加到集合中去

原文地址:https://www.cnblogs.com/day93110/p/5510997.html