2012-02-11 17 views
1

ファイルからデータを取得するためのコードは次のとおりです。私はコードを実行するとき、私はそれが総ラインからラインのわずか50%を与えていることを知るようになる。なぜそれが起こっているのですか?ファイルの読み取り:部分的な出力の取得

while(bufRead.readLine() != null) /// HERE 
{ 
    System.out.println("Count "+count+" : "+bufRead.readLine()); // AND HERE 
    count++; 

} 

をしかし、あなたは一度だけそれらを数える:

public static void main(String args[]) throws IOException 
    { 
     int count = 1; 
    try { 
      FileInputStream fileInput = new FileInputStream("C:/FaceProv.log"); 
      DataInputStream dataInput = new DataInputStream(fileInput); 
      InputStreamReader inputStr = new InputStreamReader(dataInput); 
      BufferedReader bufRead = new BufferedReader(inputStr); 

       while(bufRead.readLine() != null) 
       { 
        System.out.println("Count "+count+" : "+bufRead.readLine()); 
        count++; 

       } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
+1

修正は文字列です。 while((line = bufRead.readLine())!= null)、2番目のreadlineを削除します。 –

答えて

6

あなたは二度のラインを読んでいます。つまり、ファイル全体を実際に読み込んでいますが、行の半分しかカウントしていません。

に変更し、それを:

String line; 
while((line = bufRead.readLine()) != null) { 
    System.out.println("Count "+count+" : " + line); 
    count++; 
} 

と何が起こるかを参照してください。

+0

そうですね。ありがとうございました。しかし、私はコンソールにいくつかの空の行が表示されます。例:入力行の合計行数は100です。120行または125行を取得しています。 – Arung

+0

@Mayilarunあなたは本当ですか?あなたが私たちに示したコードではほとんど不可能です。 – soulcheck

+0

@Mayilarunはおそらくファイルのエンコードをチェックしているかもしれません。もし行末に偽のcr-lfがあるなら、それは起こっているのですか? – soulcheck

4

while(bufRead.readLine() != null) 

ので、それだけで読ん行を破棄します。

String myLine = null; 
while ((myLine = bufRead.readLine()) != null) { 
    System.out.println("Count "+count+" : " + myLine); 
    ... 
関連する問題