1 21 22 package org.armedbear.j; 23 24 import java.util.regex.Matcher ; 25 import java.util.regex.Pattern ; 26 import java.util.regex.PatternSyntaxException ; 27 28 public final class DirectoryFilenameFilter 29 { 30 private Pattern pattern; 31 private boolean ignoreCase; 32 33 public DirectoryFilenameFilter(String s) throws PatternSyntaxException 34 { 35 ignoreCase = Platform.isPlatformWindows(); 36 if (ignoreCase) 37 s = s.toLowerCase(); 38 FastStringBuffer sb = new FastStringBuffer(); 39 for (int i = 0; i < s.length(); i++) { 40 char c = s.charAt(i); 41 switch (c) { 42 case '.': 43 sb.append("\\."); 44 break; 45 case '*': 46 sb.append(".*"); 47 break; 48 case '?': 49 sb.append(".?"); 50 break; 51 default: 52 sb.append(c); 53 break; 54 } 55 } 56 try { 57 pattern = Pattern.compile(sb.toString()); 58 } 59 catch (PatternSyntaxException e) { 60 Log.debug(e); 61 pattern = null; 62 } 63 } 64 65 public boolean accepts(String name) 66 { 67 if (pattern == null) 68 return false; 69 if (ignoreCase) 70 name = name.toLowerCase(); 71 Matcher matcher = pattern.matcher(name); 72 return matcher.matches(); 73 } 74 } 75 | Popular Tags |