Java / Android:从网址读取和解析.txt文件

时间:2018-11-13 22:19:13

标签: 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
}

“ //在此处编写代码”将仅返回“数据不适用”,因为mm表示缺少数据。

我的问题是我不确定如何从要读取的URL中打开文件。我想每小时打开一个文件,并解析下面的数据,以便我可以将其分配给我的应用程序中的浮标。

2 个答案:

答案 0 :(得分:1)

您的数据文件来自Internet,因此您需要在分析文件之前先下载文件。虽然可以同时下载和解析文件,但首先让我们保持简单。

要下载文件,有很多方法可以执行此操作,但是您可以从OkHttpUrlConnectionsee 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

答案 1 :(得分:0)

您可能要使用mem-javadoc

BufferedReader

然后可以浏览文件的上下文。

BufferedReader reader = new BufferedReader(new FileReader("url.txt"));

This answer也有关于BufferedReader的更多信息