home *** CD-ROM | disk | FTP | other *** search
Java Source | 2009-04-18 | 2.0 KB | 79 lines |
- import java.io.*;
- import java.util.*;
- import java.util.regex.*;
- import java.util.logging.*;
-
- /**
- * ñóñδÑ╟ÑúÑ∞Ñ»Ñ╚ÑΩ░╩▓╝ñ╦ñóñΩíóñ½ñ─╞├─Ωñ╬└╡╡¼╔╜╕╜ñ╦Ñ▐Ñ├Ñ┴ñ╣ñδÑ╒ÑíÑñÑδñ≥
- * ├╡ñ╣FileFinderÑ»ÑΘÑ╣
- */
- public class RegexFileFinder extends FileFinder {
- private Pattern mMatchPtn;
- private Pattern[] mSkipPtns;
-
- private static Logger logger = Logger.getLogger("RegexFileFinder");
-
- //----------------------------------------------------------------------
-
- /**
- * @param pattern Ñ▐Ñ├Ñ┴ñ╡ñ╗ñδ└╡╡¼╔╜╕╜
- */
- public RegexFileFinder(Pattern matchPtn, Pattern[] skipPtns) {
- mMatchPtn = matchPtn;
- mSkipPtns = skipPtns;
- }
-
- public RegexFileFinder(Pattern matchPtn) {
- this(matchPtn, new Pattern[0]);
- }
-
- private static boolean isSymLink(File f) {
- return false;
- }
-
- boolean filter(File f) {
- // Ñ╒ÑíÑñÑδñ╟ñóñΩíóñ½ñ─╗╪─Ωñ╡ñ∞ñ┐└╡╡¼╔╜╕╜ñ╚Ñ▐Ñ├Ñ┴ñ╣ñδñ╚ñ¡
- if(f.isFile()) {
- Matcher m = mMatchPtn.matcher(f.getPath());
- if(m.matches()) {
- logger.fine("passed: " + f.getPath());
- return true;
- }
- }
- logger.fine("skipped: " + f.getPath());
- return false;
- }
-
- boolean prune(File f) {
- // Ñ╖Ñ≤Ñ▄ÑΩÑ├Ñ»ÑΩÑ≤Ñ»ñ╧├⌐ñΘñ╩ññ
- if(isSymLink(f)) {
- logger.fine("pruned(symlink): " + f.getPath());
- return true;
- }
- for(int i = 0; i < mSkipPtns.length; i++) {
- if(mSkipPtns[i].matcher(f.getPath()).matches()) {
- logger.fine("pruned(regexp): " + f.getPath());
- return true;
- }
- }
- return false;
- }
-
- //----------------------------------------------------------------------
-
- public static void main(String argv[]) {
- if(argv.length < 2)
- return;
-
- Pattern matchPtn = Pattern.compile(argv[1]);
- Pattern[] skipPtns = new Pattern[argv.length - 2];
- for(int argc = 2; argc < argv.length; argc++)
- skipPtns[argc - 2] = Pattern.compile(argv[argc]);
-
- RegexFileFinder rff = new RegexFileFinder(matchPtn, skipPtns);
- File[] array = rff.find(new File(argv[0])).getArray();
- for(int i = 0; i < array.length; i++)
- System.out.println(array[i].getPath());
- }
- }
-