1. import java.io.File; 
  2. import java.io.FilenameFilter; 
  3. import java.util.Arrays; 
  4. import java.util.regex.Pattern; 
  5. public class DirList { 
  6.     public static void main(String[] args){ 
  7.         //File path = new File("."); 
  8.         File path = new File("./src"); 
  9.         String[] list; 
  10.         if(args.length == 0){ 
  11.             list = path.list(); 
  12.         }else
  13.             System.out.println(args[0]); 
  14.             list = path.list(new DirFilter(args[0])); 
  15.         } 
  16.         Arrays.sort(list,String.CASE_INSENSITIVE_ORDER); 
  17.         for(String dirItem : list){ 
  18.             System.out.println(dirItem); 
  19.         } 
  20.     } 
  21.          
  22.  
  23.  
  24. class DirFilter implements FilenameFilter{ 
  25.     private Pattern pattern; 
  26.      
  27.     public DirFilter(String regex){ 
  28.         pattern = Pattern.compile(regex); 
  29.     } 
  30.      
  31.     @Override 
  32.     public boolean accept(File dir, String name) { 
  33.         return pattern.matcher(name).matches(); 
  34.     } 

args[0]为*\.java的时候:

 Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character(晃来晃去的元字符,意思是在这里没有意义) '*' near index 0

*\.java
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.sequence(Pattern.java:2090)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at DirFilter.<init>(DirList.java:28)
at DirList.main(DirList.java:13)
原因:
刚开始写成这样"*\.java",就报出这样的错误,后来改成这样"D.*\.java",请注意,只是在星号前面添加了一个".",大家都明白在正则表达式中"."表示所有的字符,星号表示0个到多个,只写星号是错误的