Java:如何读取文本文件
2022-08-31 12:27:05
我想读取包含空格分隔值的文本文件。值是整数。如何读取它并将其放入数组列表中?
下面是文本文件内容的示例:
1 62 4 55 5 6 77
我想把它放在数组列表中作为.我该如何在Java中做到这一点?[1, 62, 4, 55, 5, 6, 77]
我想读取包含空格分隔值的文本文件。值是整数。如何读取它并将其放入数组列表中?
下面是文本文件内容的示例:
1 62 4 55 5 6 77
我想把它放在数组列表中作为.我该如何在Java中做到这一点?[1, 62, 4, 55, 5, 6, 77]
可以使用 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()
将 a 转换为 .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,那么你甚至可以使用Stream 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 1.5 引入了 Scanner 类来处理来自文件和流的输入。
它用于从文件中获取整数,如下所示:
List<Integer> integers = new ArrayList<Integer>();
Scanner fileScanner = new Scanner(new File("c:\\file.txt"));
while (fileScanner.hasNextInt()){
integers.add(fileScanner.nextInt());
}
检查API。还有更多选项可用于处理不同类型的输入源、不同的分隔符和不同的数据类型。