java - 将格式化的 .txt 文件读入变量:Java
问题描述
我有一个名为 cars.txt 的格式化文本文件;它由制表符分隔。
Name Length Width
truck1 18.6 8.1
suv1 17.4 7.4
coupe1 14.8 5.4
mini1 14.1 5.0
sedan1 16.4 6.1
suv2 17.5 7.3
mini2 14.3 5.2
sedan2 16.5 6.2
我需要阅读此信息,以便稍后用于计算。这是我目前的想法,但我很难拼凑我需要执行的内容。
public class Class{
public void readFileIn(){
Scanner sc = new Scanner(new FileReader("cars.txt");
try{
while (sc.hasNextLine()){
if (/**something that catches strings*/){
method1(string1, double1, double2);
method2(double1, double2);
}
}
}catch(FileNotFoundException exception){
System.out.println("File dosen't exist");
}
}
}
解决方案
Scanner 和 Buffer Reader 不再经常使用,因为 Java 提供了一种更好的方法来用更少的代码实现相同的结果。我可以看到至少三种可能的方法来解决您的问题:
方法 1:如果您至少可以使用 Java 8,那么我建议使用 java.nio.file库将文件作为行流读取:
Stream<String> linesStream=Files.lines("cars.txt");
然后根据您需要做什么,您可以使用forEach将在流的每一行上循环:
linesStream.forEach(e -> e.myMethod());
或Java 收集器来执行您需要的计算。可以在这里找到关于收集器的一个很好的教程。您也可以使用收集器来分离您的字符串等...
方法 2:您可以使用 Apache Commons 库来实现相同的目标。特别是您可以使用FileUtils和StringUtils。例如:
File carFile=new File("cars.txt");
LineIterator lineIterator=lineIterator(carFile);
for(String line : lineIterator) {
String[] my values=StringUtils.split(line);
//do whatever you need
}
方法 3:使用 Jackson 将您的文件转换为 json 或 java 对象,然后您可以将其用于您自己的转换。这是一个解释如何将 CSV 转换为 JSON 的示例。通过深入研究 Jackson 文档,您可以将其应用于您的案例。
推荐阅读
- javascript - 事件侦听器在 cookie 模式下不起作用
- kubernetes - Traefik Ingress 没有路由流量
- r - r中括号列表(...)中带有...的列表的功能是什么
- java - 从 H2 数据库中读取 TINYINT 值作为布尔值/布尔值时出现 MappingException
- javascript - 在 JavaScript 平台游戏中为玩家选择 x 和 y 坐标
- ios - Cordova 9 ios 5.1.1 - 从存储中播放视频
- c++ - 交点 Point1.Y 和 Y 应该相等。但是 Point1.Y 和 Y 是有区别的。为什么?
- python - 如何将numpy数组转换为压缩格式进行传输?
- angular - Angular 10 CORE 阻止了我对本地 ms 的休息呼叫
- python - 迷失在 Sympy 解决方案中