Java/Android : Read and parse . 来自 url 的 txt 文件

标签 java android text-parsing

在 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 postthe documentation )。一旦您对此感到更加满意,您可能会转到 RxJava .

关于Java/Android : Read and parse . 来自 url 的 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290378/

相关文章:

java - 在javascript中调用java方法

java - 如何在 Android 应用程序中显示字符串?

android - 突出显示列表中的 TextView 项

android - 在 viewpager 的 recyclerview 中加载大数据的性能问题

c# - 在 C# 中解析文本文件并跳过一些内容

c - 阅读文本文件时如何跳过白线?

java - 使用 MaltParser engmalt 进行解析

java - API的含义

java - 当测试并行运行时,Webdriver 对象被覆盖

java - 使用泛型正确扩展接口(interface)