为了账号安全,请及时绑定邮箱和手机立即绑定

Java:如何读取文本文件

Java:如何读取文本文件

qq_遁去的一_1 2019-06-29 09:57:14
Java:如何读取文本文件我想读取一个包含空格分隔值的文本文件。值是整数。我如何读取它并将其放入数组列表中?以下是文本文件内容的示例:1 62 4 55 5 6 77我想把它列成[1, 62, 4, 55, 5, 6, 77]..我如何在Java中做到这一点?
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

你可以用Files#readAllLines()将文本文件的所有行放入List<String>.

for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
    // ...}

教程:基本I/O>文件I/O>读取、写入和创建文本文件


你可以用String#split()劈开String在基于正则表达式的部分中。

for (String part : line.split("\\s+")) {
    // ...}

教程:数字和字符串>处理字符串中的字符


你可以用Integer#valueOf()转换为String变成Integer.

Integer i = Integer.valueOf(part);

教程:数与串>数与串之间的转换


你可以用List#add()若要将元素添加到List.

numbers.add(i);

教程:接口>列表接口


因此,简单地说(假设文件没有空行或尾随/前导空格)。

List<Integer> numbers = new ArrayList<>();for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
    for (String part : line.split("\\s+")) {
        Integer i = Integer.valueOf(part);
        numbers.add(i);
    }}

如果您碰巧已经在Java 8,那么您甚至可以使用流API为此,从Files#lines().

List<Integer> numbers = Files.lines(Paths.get("/path/to/test.txt"))
    .map(line -> line.split("\\s+")).flatMap(Arrays::stream)
    .map(Integer::valueOf)
    .collect(Collectors.toList());

教程:用Java 8流处理数据


查看完整回答
反对 回复 2019-06-29
?
aluckdog

TA贡献1847条经验 获得超7个赞

Java 1.5引入了扫描器类处理来自文件和流的输入。

它用于从文件中获取整数,如下所示:

List<Integer> integers = new ArrayList<Integer>();Scanner fileScanner = new Scanner(new File("c:\\file.txt"));while (fileScanner.hasNextInt()){
   integers.add(fileScanner.nextInt());}

不过,请检查API。处理不同类型的输入源、不同的分隔符和不同的数据类型有更多的选项。


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 332 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信