2012-04-11 9 views
-1

ファイル内のキーワードを検索したい。キーワードを見つけたら、このキーワードの前に50語、このキーワードの後に​​50語を得たいと思います。javaファイルはドキュメントの真ん中から逆順に読む

逆の順序でファイルを読む方法があるのだろうかと思います。

+2

何か試したことがありますか? – vikiiii

+0

いくつかの問題が発生した場合は、まずurselfを試してから質問を投稿してください。 –

答えて

0

以下のコードを使用してください。

List<String> previousWords = new ArrayList<String>(); 
List<String> nextWords = new ArrayList<String>(); 
boolean foundKeyWord = false; 

Scanner sc2 = null; 
try { 
    sc2 = new Scanner(new File("translate.txt")); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
while (sc2.hasNextLine()) { 
     Scanner s2 = new Scanner(sc2.nextLine()); 
    boolean b; 
    while (b = s2.hasNext()) { 
     String s = s2.next(); 
     if(!foundKeyWord) { 
      if(s.equals(findKeyWord)) { 
      foundKeyWord = true; 
      } 
     } 
     //Keyword not found then add to the previouswords list 
     if(!foundKeyWord) { 
      previousWords.add(s); 
     } else { 
      //already key found now we need to add next 50 words 
      if(nextWords.size <= 50) { 
       nextWords.add(s); 
      } else { 
      //if 50 key words are added then break from the loop, if in case if there are less than 50 words in file after keyword then scanner will end. 
      break; 
      } 

     } 

    } 
} 

//Now we need to fix the previous 50 key words in case if keyword is found after 50th word. 

    if(previousWords.size > 50){ 
    previousWords.subList(previousWords.size() - 50, previousWords.size()); 
    } 
1

あなたは探している単語を見つけるために、ファイルを1行ずつ読む必要があります。あなたができることは、文字列配列のように50語を保持するバッファを持つことですあなたが探している言葉でない場合は、あなたのテキストを読み込み、新しい単語が最も古いものを上書きしてバッファに入れてください。必要なものが見つかったら、バッファからすべての単語を取り出し、次の50語を読んでください。

+0

私はそれが大丈夫だと思います。しかし、この操作は遅いかもしれません。すべての単語を読みながら、常にバッファ配列を更新する必要があります。 – jacop41

関連する問題