使用Scanner无法在文件中找到行数

时间:2014-01-27 17:46:42

标签: java file io

我正在尝试使用以下代码中的扫描仪计算文件中的行数,但由于某种原因,我陷入无限循环。

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

3 个答案:

答案 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在大约三行中完成。首先寻找文件大小,然后获取当前行号。