2014-12-31 74 views
0

我想要計算行號。使用Java LineNumberReader的文件。輸出帶有問題。問題是替代線顯示像行號。 1,3,5,...和計數總行數我得到了一半。的實際線路總數。下面是代碼用Java計算文件的行數

import java.lang.*; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.LineNumberReader; 

public class countLine{ 
    File file=null; 
    public countLine(){ 
      file =new File("E:\\test.txt"); 
     getFileData(); 
    } 
    public void getFileData(){ 
      try{ 
       if(file.exists()){ 
        FileReader fr = new FileReader(file); 
        LineNumberReader lnr = new LineNumberReader(fr); 
        int linenumber = 0; 
         do{ 
       System.out.println(lnr.readLine()); 
         linenumber++; 
         }while (lnr.readLine() != null); 
         System.out.println("Total number of lines : " + linenumber); 
         lnr.close(); 
       }else{ 
        System.out.println("File does not exists!"); 
       } 
      } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
    public static void main(String h[]){ 
     countLine cl = new countLine(); 
    } 
} 
+1

每次調用'的readLine '讀一行...... – njzk2

+0

行1,3,5等被打印。在計數總數沒有。前面的線條有10行然後在輸出我只得到5 –

+1

並使用lnr.getLineNumber()作爲行號。 – laune

回答

-1

每lnr.readLine()從文件中讀取一行並返回。
你快把兩次讀取:
1)在的System.out.println
2)在while語句

你需要做出的readLine方法的調用,
保存結果的變量,當它null是文件的結尾。

看看:

int linenumber = 0; 
String tmp = new String(); 
while ((tmp = lnr.readLine()) != null) { 
    linenumber++; 
    System.out.println(tmp); 
} 
+1

爲什麼初始化'tmp'當它被分配到下一行時? 「如果文件清空它不算數!!!」意思?你有多少次要回答這個問題? – EJP

+0

我重寫了我以前的答案,它真的不那麼理解抱歉。:) – Naor88

7

你讀行兩次,一次用System.out.println(lnr.readLine());和曾經與while (lnr.readLine() != null);

結合其他兩個答案爲一個給正確的行數以及做System.out.println(...)與能力行內容:

int linenumber = 0; 
String tmp = new String(); 
while ((tmp = lnr.readLine()) != null) { 
    linenumber++; 
    System.out.println(tmp); 
} 
+0

什麼是正確的方法? –

+0

@HarshKanakhara看看http://stackoverflow.com/a/4716623/1393766 – Pshemo

+0

作爲其他答案建議之一,取決於你是否需要線內容的System.out.println(Naor的答案)或不是(laune的回答)。 – Michal

0

這已經足夠計數:

FileReader fr = new FileReader(file); 
LineNumberReader lnr = new LineNumberReader(fr); 
while (lnr.readLine() != null); 
System.out.println(lnr.getLineNumber()); 
lnr.close(); 

以後添加或者,如果您需要打印線(+行號):

String line = null; 
while ((line = lnr.readLine()) != null){ 
    System.out.println(lnr.getLineNumber() + " " + lnr.getLineNumber()); 
} 
+0

thanks..but如果我想打印該行號的內容該怎麼辦 –

0

你可以得到的行數與兩行代碼:像

lineNumberReader.skip(Long.MAX_VALUE); 
int count = LineNumberReader.getLineNumber(); 

Ë& OE