d盘下有.java的文件 但以下代码显示的结果为空,错在哪?
import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.*;
import java.util.*;
public class DirList { public static void main(String[] args) {
String filePath="d:\\";
String filterName=".java";
FilenameFilter ff = new DirFilter(filterName);
File f = new File(filePath);
String[] list = f.list(ff);
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
} static class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
public boolean accept(File dirFile , String name){
return pattern.matcher(name).matches();
}
}
}
import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.*;
import java.util.*;
public class DirList { public static void main(String[] args) {
String filePath="d:\\";
String filterName=".java";
FilenameFilter ff = new DirFilter(filterName);
File f = new File(filePath);
String[] list = f.list(ff);
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
} static class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
public boolean accept(File dirFile , String name){
return pattern.matcher(name).matches();
}
}
}
String filterName=".+?\\.java";
谁解释下 .+\\.java
+代表出现一次以上
\\.就是对--A的点进行转义,表示点字符
java就是java了
如果要忽略
String filterName="(?i).+?[.]java";
String filterName="\\.java$"; 要用:
return pattern.matcher(name).find();