用Java计算文件的行号

时间:2014-12-31 16:01:34

标签: java file-io java-io

我正在努力计算行号。一个文件使用Java LineNumberReader 。输出有问题。问题是显示替代行,如行号。 1,3,5,...并计算总数没有线我得到了一半没有。总实际行数。这是代码

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(); 
    }
}

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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() );
}

答案 2 :(得分:0)

您可以使用两行代码获取行数:类似

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

E&安培; OE

答案 3 :(得分:-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);
}