在 android studio 中使用 java 我正在尝试读取一个 .txt 文件并解析它以获取一些数据。
文件:https://www.ndbc.noaa.gov/data/latest_obs/latest_obs.txt
我正在使用他下面的代码来解析数据:
String[] splited = str.trim().replaceAll(" +", " ").split(" ");
String sDate1= splited[3] + "/" + splited[4] + "/" + splited[5]
+ "/" + splited[6] + "/" + splited[7];
try{
java.util.Date date1 = new
java.text.SimpleDateFormat("yyyy/MM/dd/hh/mm").parse(sDate1);
System.out.println(date1);
}
catch(Exception e){
System.out.println(e.getMessage());
}
String windSpeed = splited[9];
String waveHeight = splited[11];
String airTemperature = splited[17];
String waterTemperature = splited[18];
System.out.println(windSpeed);
System.out.println(waveHeight);
System.out.println(airTemperature);
System.out.println(waterTemperature);
if(windSpeed.toLowerCase().equals("mm")){
// write your code here
}
if(waveHeight.toLowerCase().equals("mm")){
// write your code here
}
if(airTemperature.toLowerCase().equals("mm")){
// write your code here
}
if(waterTemperature.toLowerCase().equals("mm")){
// write your code here
}
'//write your code here' 将只返回'data N/A',因为 mm 指的是缺失数据。
我的问题是我不确定如何从要读取的 url 打开文件。我想每小时打开一次文件,并解析下面的数据,以便我可以将其分配给我的应用程序中的浮标。
最佳答案
您的数据文件来自互联网,因此您需要先下载该文件,然后再进行解析。虽然可以同时下载和解析文件,但首先让我们保持简单。
要下载文件,有很多方法可以做到这一点,但您可以从 OkHttp 开始。或 UrlConnection
( see this SO answer for more info )。如果您想要其他选择,请查看 Retrofit . Retrofit 是 OkHTTP 的包装器,使有经验的开发人员更容易使用它,但如果您刚刚开始,我建议您暂时坚持使用 OkHttp,直到您了解发生了什么。
一旦文件被下载或存储在内存中,您可能希望使用 BufferedReader
(如 rileyjsumner 所建议的那样)使用您发布的代码一次读取和解析一行。
因为您专门询问有关 Android 的问题,所以您需要牢记以下几点:
- 读取和写入临时文件时,您需要使用临时存储空间。查看此文档以获取更多详细信息:https://developer.android.com/training/data-storage/files
- 您需要在单独的线程上执行下载和文件 I/O。 Android 本质上是多线程的,依赖主线程只更新 UI。其他一切都应该在不同的线程上完成。有几种方法可以做到这一点。 ( see this post 或 the documentation )。一旦您对此感到更加满意,您可能会转到 RxJava .
关于Java/Android : Read and parse . 来自 url 的 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290378/