用Java按行读取文件

10 浏览
0 Comments

用Java按行读取文件

我正在尝试在Java中读取一个txt文件。我需要将代码的每一行分开,并将每个由逗号分隔的数字放入一个新的数组对象中。文件很长,但概括起来就是这样的。\n

1,2,12343,12422,12342,12322,12421
2,3,12322,42444,24344,24553,34535

\n我该如何编写代码将每一行添加到一个数组中,并将该行的数字作为其内容?

0
0 Comments

在Java中,读取文件是一个常见的操作。有时候,我们需要逐行读取文件的内容。本文将介绍如何通过行读取文件,并提供了一个解决方法。

问题的原因是我们想要在一个循环中使用try和catch来逐行读取文件。在上面的代码中,我们使用了Java的nio库中的Path、Files和streams来读取文件。具体步骤如下:

1. 首先,我们使用Path.of(filename)方法创建一个Path对象,该对象表示文件的路径。

2. 然后,我们使用Files.lines(path)方法返回一个Stream对象,其中每个字符串代表文件的一行内容。

3. 接下来,我们使用map方法将每行内容进行分割,使用逗号作为分隔符。这将返回一个Stream对象,其中每个数组代表一行内容的分割结果。

4. 然后,我们使用map方法将每个分割后的字符串数组转换为int数组。这将返回一个Stream对象,其中每个数组代表一行内容的转换结果。

5. 最后,我们使用collect方法将转换后的int数组收集到一个List对象中。

解决方法是在一个循环中使用try和catch来逐行读取文件的内容。在每次循环迭代中,我们可以使用try-with-resources语句来确保文件流会被正确关闭。具体代码如下:

try (Stream lines = Files.lines(path)) {
    lines.forEach(line -> {
        // 处理每行的内容
    });
} catch (IOException e) {
    e.printStackTrace();
}

在上面的代码中,我们使用try-with-resources语句来创建一个Stream对象并赋值给lines变量。在try块结束时,该文件流将会被自动关闭。

在循环中,我们可以使用forEach方法来遍历每行的内容,并进行相应的处理。

需要注意的是,我们必须捕获可能出现的IOException异常,并进行相应的处理。在上述代码中,我们简单地将异常的堆栈信息打印到控制台。

最后,不要忘记在使用完Files.lines(path)方法返回的Stream对象后,手动关闭它,以释放相关资源。

通过上述方法,我们可以在一个循环中使用try和catch逐行读取文件的内容,并进行相应的处理。这样可以更好地处理文件读取过程中可能出现的异常情况。

0