Java Reference
In-Depth Information
}
}
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
{