Counting the Number of Lines in File
本问题已经有最佳答案,请猛点这里访问。
我编写了一段代码来计算文件中的行数(我无法找到可以在IO类中实现这一点的内置方法)。 我的代码如下:
1 2 3 4 5 6 7 | try { while(!line.equals("null")) { line = bufferedReader.readLine(); a = a + 1; System.out.println(a +"" + line); } } catch (NullPointerException N) {} |
我遇到的问题是,当变量'line'计算为"null"时,计数仍然增加。 我明白为什么会这样; 在整个代码块运行之后,while语句才会检查条件,在这种情况下,'a'将再次增加。 我考虑过的解决方案:
1)设置'a = -1',而我目前在这段代码之前有'a = 0'
2)使用if语句在达到count变量之前打破循环。 这是我修改代码块的方法:
1 2 3 4 5 6 7 8 | try { while(!line.equals("null")) { line = bufferedReader.readLine(); if (line.equals("null")) {break;} a = a + 1; System.out.println(a +"" + line); } } catch (NullPointerException N) {} |
我上面的问题? (1)似乎太做作,而(2)似乎多余。 我想知道是否有更好的方法来解决这个问题 - 感谢您的建议。
除非您的文件以包含字符串"null"的行结束,否则您的代码是错误的。 您应该与
关于你的原始问题,你可以通过读取一行并在循环条件下测试
1 2 3 4 |
有一个
1 2 3 4 | try(LineNumberReader lnr = new LineNumberReader(new FileReader(new File("file.txt"))) { lnr.skip(Long.MAX_VALUE); linesCount = lnr.getLineNumber() + 1; //because it's index from 0 } |
尽管有其他(好的)答案,我认为值得发布一个替代的,简单的解决方案:
1 | long lineCount = Files.lines(Paths.get(filename)).count(); |