2014-12-31 54 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