Моя задача - написать класс RFind, который рекурсивно ищет текущий каталог и его подкаталоги, пытаясь сопоставить файлы с его единственным аргументом регулярного выражения.
Пока единственное, что я пробовал, это следующее, котороеа) не является рекурсивным и б) на самом деле не работает.Как бы вы поступили так?
Примечание: в приведенном примере показано, как вы можете передать регулярное выражение в командной строке и как оно будет выглядеть:
$ java RFind ".* .java "
. / RFind.java
. / src / AHTNF.java
$
public class RFind {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Please enter a regular expression: ");
String regex = in.next();
Pattern p = Pattern.compile(regex);
File dir = new File (".");
File[] files = dir.listFiles();
ArrayList<String> f = new ArrayList<String>();
for (int i = 0; i < files.length; i++) {
Matcher m = p.matcher(files[i].toString());
if (m.matches()) {
f.add(files[i].toString());
}
}
for (int i = 0; i < f.size(); i++) {
System.out.println(f.get(i));
}
}
}