Java Reference
In-Depth Information
}
}
Example 11-3 uses a class called FindFilter , my implementation of FileNameFilter , to
implement matching.
Example 11-3. src/main/java/dir_file/FindFilter.java
/** Class to encapsulate the filtration for Find.
* For now just setTTTFilter() methods. Really needs to be a real
* data structure to allow complex things like
* -n "*.html" -a \( -size < 0 -o mtime < 5 \).
*/
public
public class
class FindFilter
FindFilter implements
implements FilenameFilter {
boolean
boolean sizeSet ;
int
int size ;
String name ;
Pattern nameRE ;
boolean
boolean debug = false
false ;
void
void setSizeFilter ( String sizeFilter ) {
size = Integer . parseInt ( sizeFilter );
sizeSet = true
true ;
}
/** Convert the given shell wildcard pattern into internal form (an RE) */
void
void setNameFilter ( String nameFilter ) {
name = nameFilter ;
StringBuilder sb = new
new StringBuilder ( '^' );
for
for ( char
char c : nameFilter . toCharArray ()) {
switch
switch ( c ) {
case
case '.' :
sb . append ( "\\." ); break
break ;
case
case '*' :
sb . append ( ".*" ); break
break ;
case
case '?' :
break ;
// Some chars are special to RE and have to be escaped
case
sb . append ( '.' ); break
case '[' :
sb . append ( "\\[" ); break
break ;
case
case ']' :
sb . append ( "\\]" ); break
break ;
case
case '(' :
sb . append ( "\\(" ); break
break ;
case
case ')' :
sb . append ( "\\)" ); break
break ;
default
default :
sb . append ( c ); break
break ;
}
}
sb . append ( '$' );
iif ( debug )
System . out . println ( "RE=\"" + sb + "\"." );
try
try {
Search WWH ::




Custom Search