java - 使用java解析文本文件,需要建议使用哪一个

标签 java text-parsing readfile

我可以使用 InputFileStream 和 Scanner 类成功读取文本文件。这很简单,但我需要做一些比这更复杂的事情。首先介绍一下我的项目的一些背景信息。我有一个带有传感器的设备,我正在使用记录器,它将每 10 秒将传感器的数据记录到一个文本文件中。每 10 秒就有一行新数据。所以我想要的是,当我读取文件时,将每个单独的传感器数据抓取到一个数组中。例如: 速度 高度 纬度 经度

22 250 46.123245 122.539283

25 252 46.123422 122.534223

所以我需要将海拔数据 (250, 252) 抓取到数组 alt[] 中;等等 vel[]、lat[]、long[]...

然后文本文件的最后一行将有不同的信息,只是一行。它将包含日期、行驶距离、已用时间..

经过一番研究后,我遇到了 InputStream、Reader、StreamTokenizer 和 Scanner 类。我的问题是,您会为我的案例推荐哪一款?就我的情况来说,是否可以做我需要做的事情?它是否能够检查文件的最后一行是什么,以便它可以获取日期、距离等。谢谢!

最佳答案

读取器 + String.split()

String line;
String[] values;
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
List<Integer> velocity = new ArrayList<Integer>();
List<Integer> altitude = new ArrayList<Integer>();
List<Float> latitude = new ArrayList<Float>();
List<Float> longitude = new ArrayList<Float>();

while (null != (line = reader.readLine())) {
    values = line.split(" ");
    if (4 == values.length) {
        velocity.add(Integer.parseInt(values[0]));
        altitude.add(Integer.parseInt(values[1]));
        latitude.add(Float.parseFloat(values[2]));
        longitude.add(Float.parseFloat(values[3]));
    } else {
        break;
    }
}

如果您需要数组而不是列表:

velocity.toArray();

据我了解,数据行有 4 个项目,最后一行有 3 个项目(日期、距离、耗时)

关于java - 使用java解析文本文件,需要建议使用哪一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717838/

相关文章:

java - AnnotationProcessing - 创建可执行元素

java - Spring Webflow对两种类型的用户进行身份验证

Informatica BDM 中的 Java 转换。将日期范围记录拆分为多条记录,每月一条记录

julia - 解析字符串数组

php - 给定大写名称转换为 Proper Case,处理 "O' Hara"、 "McDonald" "van der Sloot"等

java - 在哪里保存文本文件以便能够将其读入 Android 项目

C++读取文件并替换

java - 使用客户端 IP 作为服务器 IP

c# - C# 中的正则表达式

c++ - C++:如果没有来自串行端口的新数据,如何忽略ReadFile()?