2016-03-25 9 views
0
 try(BufferedReader br = new BufferedReader(new FileReader("MANIFEST.MF"))) { 
     StringBuilder sb = new StringBuilder(); 
     String line = br.readLine(); 

     while (line != null) { 
      sb.append(line); 
      sb.append(System.lineSeparator()); 
      line = br.readLine(); 
     } 
     String everything = sb.toString(); 
     System.out.println(everything); 

これは私がファイル内のすべてのテキストを読むのに使うものです。たとえば、「Main-Class」を含む特定の行を読むために、これをどのように変更することができますか?Java:テキストファイルを読むとき、特定の文字列を含む特定の行をどのように読むことができますか?

ありがとうございます!

+0

は、すべての行を読み、ときに:

try (BufferedReader reader = new BufferedReader(new FileReader("MANIFEST.MF"))) { String line = null; while ((line = reader.readLine()) != null) { if (line.contains("Main-Class")) break; } if (line != null) { // line was found } else { // line was not found } } 

は「メイン・クラス」を含むすべての行を検索するには:

String line = null; while ((line = br.readLine()) != null) { sb.append(line); sb.append(System.lineSeparator()); } 

+0

各行をループせずにその行を取得することはできません。各行を 'line.contains(...)'でチェックしてからwhileループを抜け出す必要があります。 –

答えて

0

あなたの行変数に探している文字列が含まれているかどうかを確認し、whileループを終了するか、行で必要なものを実行します。また、コードをこれに変更したいかもしれません...少し簡潔で読みやすい。

StringBuilder matchedLines = new StringBuilder(); 
try (BufferedReader reader = new BufferedReader(new FileReader("MANIFEST.MF"))) { 

    String line = null; 
    while ((line = reader.readLine()) != null) { 
    if (line.contains("Main-Class")) { 
     matchedLines.append(line); 
     matchedLines.append(System.lineSeparator()); 
    } 
    } 
} 
// ... 
System.out.println("Matched Lines:"); 
System.out.println(matchedLines.toString()); 
+0

if(line.toLowerCase()。contains( "main"))ループの開始、それは動作するようです。しかし、私は何らかの理由でwhileループを終了することはできません..それはその行を印刷し続ける – Tattaglia

+0

"break;"真の状態の終わりに – MolonLabe

0

は、「メイン・クラス」を含む最初の行を検索するにはあなたが望むものから始まる行を得る、あなたはその行を持っています。
関連する問題