当前位置: 代码迷 >> J2SE >> 文件过滤FilenameFilter,该怎么解决
  详细解决方案

文件过滤FilenameFilter,该怎么解决

热度:130   发布时间:2016-04-24 01:30:30.0
文件过滤FilenameFilter
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";
------解决方案--------------------
探讨
".+?\\.java .+\\.java 这些能用 \\.java$ 依然为空
谁解释下 .+\\.java

------解决方案--------------------
不知道LZ是否还要忽略大小写
如果要忽略
String filterName="(?i).+?[.]java";