简单获取目录列表:
/* new File("."); "." 表示从项目所在目录下开始查找 "src" 从项目目录下的src文件夹中查找下一级文件
如果"src" 不存在路径则报错 Exception in thread "main" java.lang.NullPointerException
此方法仅能查找当前目录下的文件或者其子文件 不能更深一层 */
File path = new File(".");
list = path.list();
目录列表器带有简单过滤:
过滤功能:将不符合后缀的,或者文件内容不包含指定字符串的文件过滤
public static void main(String[] arg) { File path = new File("."); String[] list; /*第一个字符串设置 文件后缀 第二个字符串设置包含的字符串 最后输出符合的文件*/ String[] args = {".txt","src"}; /*如果没有条件,则将所有结果赋值给list 简单获取列表*/ if (args.length == 0) { list = path.list(); }else { /* list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录 中满足指定过滤器的文件和目录。 */ list = path.list( new FilenameFilter() { /*对匿名filenameFilter 进行重写方法*/ /*获取匹配条件*/ private String ext = args[0].toLowerCase(); @Override public boolean accept(File dir, String name) { /*匹配以规定条件结尾的文件或者目录*/ if (name.toLowerCase().endsWith(ext)) { /*获取set集合 特性:不重复*/ Set<String> words = new HashSet<String>( /* \W+ 匹配任何非单词字符一次或者多次。等价于“[^A-Za-z0-9_]+” 用于TextFile中split() */ /*匿名函数*/ new TextFile(new File( dir,name).getAbsolutePath(), "\\W+")); if (words.contains(args[1])) return true; } return false; } }); } Arrays.sort(list,String.CASE_INSENSITIVE_ORDER); for (String dirItem : list) { System.out.println(dirItem); } } |
File的list方法源码:
public String[] list(FilenameFilter filter) { String names[] = list(); if ((names == null) || (filter == null)) { return names; } List<String> v = new ArrayList<>(); for (int i = 0 ; i < names.length ; i++) { if (filter.accept(this, names[i])) { v.add(names[i]); } } return v.toArray(new String[v.size()]); } |
TextFile源码:
public TextFile(String fileName, String splitter) { /*调用的是父类ArrayList的有参构造* */ super(Arrays.asList(read(fileName).split(splitter))); /*如果 集合的元素0位空 则删除元素*/ if(get(0).equals("")) remove(0); } |
TextFile read方法源码:
public static String read(String fileName) { StringBuilder sb = new StringBuilder(); try { BufferedReader in= new BufferedReader(new FileReader( new File(fileName).getAbsoluteFile())); try { String s; while((s = in.readLine()) != null) { sb.append(s); sb.append("\n"); } } finally { in.close(); } } catch(IOException e) { throw new RuntimeException(e); } return sb.toString(); } |