用Java计算文件的行号

Har*_*ara 0 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(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*hal 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);
}
Run Code Online (Sandbox Code Playgroud)