2017-12-06 12 views
-1

以下のコードを使用して特定の条件をチェックするために、テキストファイルから行ごとの結果を読み取るプログラムを作成します。Javaがテキストファイルを完全に読み取らない

for (File f : readAllTxtFile) { 
    if (f.getName().endsWith(".txt") && f.getName().length() > 28) { 

       Scanner input = new Scanner(f); 

       while (input.hasNextLine()) { 
        String lineResult = input.nextLine(); 

        System.out.println(lineResult); // I print out the line result here 

        if (lineResult.contains("TER_GetCarrierInfo")) { 
         ...//do something 
         break; 
        } 
       } 
    } 
} 

私の質問は、なぜシステムは私のtxtファイルの半分まで読んで停止したのですか?条件if (lineResult.contains("TER_GetCarrierInfo"))が存在しない/ヒットしたにもかかわらず、次の行のイベントを読み続けることができませんでした。 私のtxtファイルの周りに1000の周りに900 +ビット

誰か私と説明することはできますか?

おかげで、ここで

+0

は、基本的には、複数のファイル権利を読んでいる、だから、プログラムも上の停止...

BufferedReader br = new BufferedReader(new FileReader(f)); 

を使用して、それが正常に動作するように変更してみてください最初のファイルか? – Akjun

+0

うん、私は複数のファイルを読む..プログラムは完全に実行されますが、ファイルを読み終えることができません。しかし、まだ別のファイルを読み続けることができます。 例: ファイルABCには1000行があります - システムは500行まで読み込み、次の行の読み込みを停止してから、別のFILE BCDを読み込み続けます –

+2

500行目でプログラムの停止をどのように特定しますか?私は、コードをシミュレートしていると期待どおりに実行されるようです。 – Akjun

答えて

0

appreaciateは、私はあなたのシナリオをシミュレートするために使用するコードです。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class test { 

    public static void main(String args[]) throws FileNotFoundException 
    { 

     File dir = new File("/yourpath"); 
     File[] readAllTxtFile = dir.listFiles(); 

     for (File f : readAllTxtFile) { 
      if (f.getName().endsWith(".txt") && f.getName().length() > 28) { 

       Scanner input = new Scanner(f); 

       while (input.hasNextLine()) { 
        String lineResult = input.nextLine(); 

        System.out.println(lineResult); // I print out the line result here 

        if (lineResult.contains("TER_GetCarrierInfo")) { 
         //do something 
         break; 
        } 
       } 
      } 

     } 

    } 

} 

、あなたのプログラムは、これはあなたのことを示しますが、500行の後に読ん線500の後にテキストファイルに「TER_GetCarrierInfo」を入れて、コードセグメント

if (lineResult.contains("TER_GetCarrierInfo")) { 
    System.out.println("Found 'TER_GetCarrierInfo' "); 
    break; 
} 

を交換し続けるかどうかを確認したい場合ファイルの半分がscan.HTHであってもプログラムは続行されます。

+0

あなたの答えをありがとう。 実際に私のtxtファイルには、500行目以降に 'TER_GetCarrierInfo'が含まれています。行700の例は 'TER_GetCarrierInfo'と表示されます。なぜなら、 'TER_GetCarrierInfo'という行にはシリアル番号を取得したいからです。しかし、私のシリアル番号はnullを返します。だから私はデバッグした後、私はシステムがファイルを読んだことを知り、半分で停止します。 そんなに変わった –

+0

私は、シリアル番号を取得してそこからスキャンして別のファイルを読み込み続けることがあるかもしれないと思っています。ここであなたの検索方法を表示することができない場合。私は、シリアル番号の取得方法を調べて、現在のファイルのスキャンを停止する理由を調べることをお勧めします。 – Akjun

+0

申し訳ありません..あなたの提案をありがとう。 私は 'BufferedReader br = new BufferedReader(new FileReader(f));'を使うように変更しようとしました。 –

0

よし... 私はうーむ....

関連する問題