我正在尝试使用以下代码中的扫描仪计算文件中的行数,但由于某种原因,我陷入无限循环。
import java.util.*;
import java.io.*;
public class FileCount{
File fileCount;
public FileCount(String name_of_file){
fileCount = new File(name_of_file);
}
public static void main(String args[]) throws FileNotFoundException{
FileCount f = new FileCount("test.txt");
System.out.println(f.num_of_records());
}
public int num_of_records() throws FileNotFoundException{
Scanner handler = new Scanner(this.fileCount);
int num_of_lines = 0;
for(int i=0; handler.hasNextLine(); i++){
num_of_lines = i;
}
handler.close();
return num_of_lines;
}
}
答案 0 :(得分:2)
你检查它是否有下一行,但是你永远不会告诉它对该行做任何事情。这样的事情应该有效。
for(int i=0; handler.hasNextLine(); i++){
handler.nextLine();
num_of_lines = i;
}
答案 1 :(得分:1)
作为Scanner
的替代方案,您可以考虑改为使用BufferedReader
:
BufferedReader reader = new BufferedReader(new FileReader("your_file_name"));
int num_of_lines;
for (num_of_lines=0; reader.readLine()!=null; num_of_lines++) {}
答案 2 :(得分:0)
您也不需要扫描仪或BufferedReader。你可以使用LineNumberReader在大约三行中完成。首先寻找文件大小,然后获取当前行号。