关于java:计算文件的行数

Count the lines of a file

本问题已经有最佳答案,请猛点这里访问。

我有一个关于Java的问题:

我正在尝试制作一个程序,通过文件和检查一些东西,但为此,我需要一些东西来计算行,有谁知道一个很好的方法来做到这一点?

我之前从未使用过文件,所以我真的不知道。
我也没有代码显示,因为我不知道该怎么做。


通过在互联网上搜索,你可以自己找到这个。
但是,这是我使用的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public static int countLines(String filename) throws IOException {
        InputStream is = new BufferedInputStream(new FileInputStream(filename));
        try {
            byte[] c = new byte[1024];
            int count = 0;
            int readChars = 0;
            boolean empty = true;
            while ((readChars = is.read(c)) != -1) {
                empty = false;
                for (int i = 0; i < readChars; ++i) {
                    if (c[i] == '
'
) {
                        ++count;
                    }
                }
            }
            return (count == 0 && !empty) ? 1 : count;
        }
        finally {
            is.close();
        }
    }

我希望这个对你有用。

更新:

这对你来说应该更容易。

1
2
3
4
5
BufferedReader reader = new BufferedReader(new FileReader(file));
int lines = 0;
while (reader.readLine() != null) lines++;
reader.close();
System.out.println(lines);


在Java 8中:

1
2
3
4
5
6
7
long lineCount = 0;

try (Stream<String> lines = Files.lines(Paths.get(filename))){
    lineCount = lines.count();
} catch (final IOException i) {
    // Handle exception.
}


你可以做到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static void main(String[] args) {

    int linecount = 0;

    try {
        // Open the file
        FileInputStream fstream = new FileInputStream("d:\\data.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(
                fstream));
        String strLine;
        // Read File Line By Line
        while ((strLine = br.readLine()) != null) {
            if (strLine.trim().length() > 0) { // check for blank line
                linecount++;
            } else {
                continue;
            }
        }

        System.out.println("Total no. of lines =" + linecount);
        // Close the input stream
        br.close();
    } catch (Exception e) {
        // TODO: handle exception
    }

}

你只需要这样做: -

1
2
3
4
5
        BufferedReader br = new BufferedReader(new FileReader(FILEPATH));
        int lineCount = 0;
        while(br.readLine() != null)
            lineCount++;
        System.out.println(lineCount);

BufferedReader类提供readLine(),它逐行读取文本,因此可用于获取行数。


您可以尝试这一点,在行变量中,您将获得行数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 public String getFileStream(final String inputFile) {
            int lines = 0;
            Scanner s = null;

            try {
                s = new Scanner(new BufferedReader(new FileReader(inputFile)));
                while (s.hasNext()) {
                   lines++;
                }
            } catch (final IOException ex) {
                ex.printStackTrace();
            } finally {
                if (s != null) {
                    s.close();
                }
            }
            return result;
    }