简单获取目录列表:
/* 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();
}