いくつかのことを行うプログラムを作成する必要があります。
- パラメータを取ります: 検索する単語と検索するパス
- ファイルで指定された単語を1つずつ探します
- ファイル内に単語が見つかった場合 -> コンソールに出力
filename
-file path
可能になるまで、同じ解析アルゴリズムですべてのフォルダーをトラバースします。
抜粋したコードは次のとおりです。
class SearchPhrase {
// walk to root way
public void walk(String path, String whatFind) throws IOException {
File root = new File(path);
File[] list = root.listFiles();
for (File titleName : list) {
if (titleName.isDirectory()) {
walk(titleName.getAbsolutePath(), whatFind);
} else {
if (read(titleName.getName()).contains(whatFind)) {
System.out.println("File: " + titleName.getAbsoluteFile());
}
}
}
}
// Read file as one line
public static String read(String fileName) {
StringBuilder strBuider = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new FileReader(new File(fileName).getAbsoluteFile()));
String strInput;
while ((strInput = in.readLine()) != null) {
strBuider.append(strInput);
strBuider.append("\n");
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return strBuider.toString();
}
public static void main(String[] args) {
SearchPhrase example = new SearchPhrase();
try {
example.walk("C:\\Documents and Settings\\User\\Java", "programm");
} catch (IOException e) {
e.printStackTrace();
}
}
}
プログラムは次のエラーでコンパイルされません:
java.io.FileNotFoundException: C:\Documents and Settings\User\Java Hangman\Java\Anton\org.eclipse.jdt.core.prefs
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at task.SearchPhrase.read(SearchPhrase.java:28)
at task.SearchPhrase.walk(SearchPhrase.java:16)
at task.SearchPhrase.walk(SearchPhrase.java:14)
at task.SearchPhrase.main(SearchPhrase.java:48)
たぶん、この問題を解決するための別のアプローチですか?