我正在努力计算行号。一个文件使用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();
}
}
答案 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);
}