d盘下有.java的文件 但以下代码显示的结果为空,错在哪?
- Java code
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$";
其实判断里面简单点,直接用 endWiths() 最方便。
------解决方案--------------------
正则表达式的问题。
String filterName=".+?\\.java";
------解决方案--------------------
------解决方案--------------------
不知道LZ是否还要忽略大小写
如果要忽略
String filterName="(?i).+?[.]java";