1

キーワードを受け取り、ファイルのリストを検索して、キーワードを含むファイルを出力する関数を作成しようとしています。

これまでのところ、ファイルとキーワードのリストしかありません。

File[] files = new File("<directory>").listFiles();
Scanner keyword = new Scanner("hello");

ここで、キーワードを探してファイルを通過する何らかの形式のループを作成する必要があると思います。従うのが簡単なチュートリアルでさえ、助けていただければ幸いです。

編集:

ファイルは 1 行のみで構成されるテキスト ファイルです。

4

2 に答える 2

3
File dir = new File("directory"); // directory = target directory.
if(dir.exists()) // Directory exists then proceed.
{ 
  Pattern p = Pattern.compile("keyword"); // keyword = keyword to search in files.
  ArrayList<String> list = new ArrayList<String>(); // list of files.

  for(File f : dir.listFiles())
  {
    if(!f.isFile()) continue;
    try
    {
      FileInputStream fis = new FileInputStream(f);
      byte[] data = new byte[fis.available()];
      fis.read(data);
      String text = new String(data);
      Matcher m = p.matcher(text);
      if(m.find())
      {
        list.add(f.getName()); // add file to found-keyword list.
      }
      fis.close();
    } 
    catch(Exception e)
    {
      System.out.print("\n\t Error processing file : "+f.getName());
    }

  }
  System.out.print("\n\t List : "+list); // list of files containing keyword.
} // IF directory exists then only process.
else
{
  System.out.print("\n Directory doesn't exist.");
}
于 2013-03-20T18:25:40.550 に答える
0

スキャナー クラスを使用する場合、特定のキーワードについてファイルをスキャンする方法は次のとおりです。スキャナーは、提供された入力をスキャンする反復子にすぎません。

Scanner s = new Scanner(new File("abc.txt"));
while(s.hasNextLine()){
    //read the file line by line
String nextLine = s.nextLine();
            //check if the next line contains the key word
    if(nextLine.contains("keyword"))
    {
              //whatever you want to do when the keyword is found in the file
               and break after the first occurance is found
             break;
    }
}
于 2013-03-20T19:01:52.037 に答える