1 package net.sourceforge.pmd.cpd;
2
3 import java.io.File;
4 import java.io.FilenameFilter;
5 import java.util.ArrayList;
6 import java.util.List;
7
8 public class FileFinder {
9
10 private FilenameFilter filter;
11 private static final String FILE_SEP = System.getProperty("file.separator");
12
13 public List findFilesFrom(String dir, FilenameFilter filter, boolean recurse) {
14 this.filter = filter;
15 List files = new ArrayList();
16 scanDirectory(new File(dir), files, recurse);
17 return files;
18 }
19
20 /***
21 * Implements a tail recursive file scanner
22 */
23 private void scanDirectory(File dir, List list, boolean recurse) {
24 String[] candidates = dir.list(filter);
25 for (int i = 0; i < candidates.length; i++) {
26 File tmp = new File(dir + FILE_SEP + candidates[i]);
27 if (tmp.isDirectory()) {
28 if (recurse) {
29 scanDirectory(tmp, list, true);
30 }
31 } else {
32 list.add(new File(dir + FILE_SEP + candidates[i]));
33 }
34 }
35 }
36 }
This page was automatically generated by Maven