相关疑难解决方法(0)

Java中文件中的行数

我使用大量数据文件,有时我只需要知道这些文件中的行数,通常我打开它们并逐行读取它们直到我到达文件末尾

我想知道是否有更聪明的方法来做到这一点

java line-numbers large-files

209
推荐指数
8
解决办法
40万
查看次数

为什么Files.lines(和类似的Streams)不会自动关闭?

Stream的javadoc说明:

Streams有一个BaseStream.close()方法并实现AutoCloseable,但几乎所有的流实例实际上都不需要在使用后关闭.通常,只有源为IO通道的流(例如Files.lines(Path,Charset)返回的流)才需要关闭.大多数流都由集合,数组或生成函数支持,不需要特殊的资源管理.(如果流确实需要关闭,则可以在try-with-resources语句中将其声明为资源.)

因此,绝大多数情况下,人们可以在单行中使用Streams,collection.stream().forEach(System.out::println);但是对于Files.lines和其他资源支持的流,必须使用try-with-resources语句或泄漏资源.

这让我觉得容易出错并且不必要.因为Streams只能迭代一次,所以在我看来,没有一个迭代后Files.lines不应该关闭输出的情况,因此实现应该只是在任何终端操作结束时隐式调用close .我错了吗?

java stream resource-leak java-8 java-stream

48
推荐指数
3
解决办法
9075
查看次数

计算文本文件中的行数(java)

下面是我如何计算文本文件中的行数.只是想知道有没有其他方法这样做?

while(inputFile.hasNext()) {    
    a++;
    inputFile.nextLine();
}
inputFile.close();
Run Code Online (Sandbox Code Playgroud)

我正在尝试将数据输入到数组中,我不想两次读取文本文件.

任何帮助/建议表示赞赏.

谢谢

java lines count

2
推荐指数
2
解决办法
4万
查看次数

计算文件中的行数

我编写了一段代码来计算文件中的行数(我无法找到可以在IO类中实现这一点的内置方法).我的代码如下:

try {
    while(!line.equals("null")) {
        line = bufferedReader.readLine();
        a = a + 1;
        System.out.println(a + " " + line);
    }
} catch (NullPointerException N) {}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当变量'line'计算为"null"时,计数仍然增加.我明白为什么会这样; 在整个代码块运行之后,while语句才会检查条件,在这种情况下,'a'将再次增加.我考虑过的解决方案:

1)设置'a = -1',而我在此代码块之前当前有'a = 0'2)使用if语句在达到count变量之前打破循环.这是我修改代码块的方法:

try {
    while(!line.equals("null")) {
        line = bufferedReader.readLine();
        if (line.equals("null")) {break;}
        a = a + 1;
        System.out.println(a + " " + line);
    }
} catch (NullPointerException N) {}
Run Code Online (Sandbox Code Playgroud)

我上面的问题?(1)似乎太做作,而(2)似乎多余.我想看看是否有更好的方法来解决这个问题 - 感谢您的建议.

java while-loop java-8

1
推荐指数
2
解决办法
307
查看次数