2016-11-09 7 views
0

私は5つのテキストファイルを持っている私は小さな検索engine.considerを作成したいと私は全体のファイルで単語 "本"を検索したい。私は開始する必要がありますか?私は上級者であり、木とイテレータについて少しの情報があり、私はこれらの概念を使用しなければなりません。どのようにJavaで小さな検索エンジンを作る

+0

これまでに書いたコードを投稿し、どこで失敗したか説明できますか?答えを待つ間に[How to ask ...](http://stackoverflow.com/help/how-to-ask)を読んでみてください。 – bradimus

+0

問題は、私がどこからどのように始めるべきかわからないことです。 – faridamyaie

+2

@faridamyaieこの質問は適切ではありません。このサイトは特定の質問のためのものです。 – Carcigenicate

答えて

0

ツリーやイテレータについての知識は必要ありません。これは再帰呼び出しに関するものです。

依存性やフレームワークが使用されていない純粋なJavaコードは次のとおりです。 呼び出すときにパラメータとして検索するディレクトリまたはファイル名と単語を渡します。

package com.mytests; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 

public class Sometest { 

public static void main(String[] args) { 

    if (null == args || args.length < 2) { 
     System.err.println("Not enough parameters. Please provide searchPath and searchWord."); 
     return; 
    } 

    String pathToSearch = args[0]; 
    String wordToSearch = args[1]; 

    System.out.println("Start search word " + wordToSearch + " in " + pathToSearch); 

    File searchFile = new File(pathToSearch); 

    if (!searchFile.exists()) { 
     System.err.println("Cannot find given file or directory to search :" + pathToSearch + ": "); 
    } 

    int matchesCount = 0; 
    matchesCount = searchWord(searchFile, wordToSearch, matchesCount); 

    System.out.println("Search completed. Matches found : " + matchesCount); 

} 

private static int searchWord(File sourceFile, String wordToSearch, int matchesCount) { 

    int count = matchesCount; 
    if (sourceFile.isDirectory()) { 
     String[] sourceFilesArray = sourceFile.list(); 

     for (String nextFileName : sourceFilesArray) { 
      File nextFile = new File(sourceFile.getAbsolutePath() + System.getProperty("file.separator") 
        + nextFileName); 
      count = searchWord(nextFile, wordToSearch, count); 
     } 
    } else { 
     try { 
      BufferedReader sourceFileReader = new BufferedReader(new FileReader(sourceFile)); 
      String nextLine = ""; 
      while (true) { 
       nextLine = sourceFileReader.readLine(); 
       if (null == nextLine) { 
        break; 
       } 

       if (nextLine.contains(wordToSearch)) { 
        System.out.println("found in -> " + sourceFile.getCanonicalPath()); 
        count++; 
       } 

      } 
      sourceFileReader.close(); 
     } catch (Exception e) { 
      System.err.println("Error while reading file " + sourceFile.getAbsolutePath() + " : " + e.getMessage()); 
     } 
    } 

    return count; 
} 

} 

私はちょうど目的とは何ですか?個人教育ですか?

+0

まずは、あなたに感謝します。本当に役に立ちました。私の目的は、教育とデータ構造のさまざまな機能の両方を実践することです。 – faridamyaie

関連する問題