Java / Android: чтение и анализ файла .txt с URL - PullRequest
0 голосов
/ 14 ноября 2018

Использование Java в Android Studio. Я пытаюсь прочитать файл .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 голосов
/ 14 ноября 2018

Ваш файл данных поступает из Интернета, поэтому вам необходимо сначала загрузить файл перед его анализом.Хотя можно одновременно загружать и анализировать файл, сначала сделаем его простым.

Чтобы загрузить файл, существует множество способов сделать это, но вы можете начать с OkHttp. или UrlConnection ( см. Этот SO-ответ для получения дополнительной информации ).Если вы хотите альтернативу, проверьте Дооснащение .Retrofit - это оболочка для OkHTTP, которая делает его немного более легким в использовании для опытных разработчиков, но если вы только начинаете, я бы рекомендовал придерживаться OkHttp, пока вы не поймете, что происходит.

После того, как файл загружен или находится в памяти, вы, вероятно, захотите использовать BufferedReader (в соответствии с предложением rileyjsumner) для чтения и анализа по одной строке за раз, используя отправленный вами код.

Поскольку вы спрашиваете конкретно об Android, вам нужно иметь в виду несколько вещей:

  • При чтении и записи временных файлов вы захотите использовать временное хранилище.Ознакомьтесь с этой документацией для получения более подробной информации: https://developer.android.com/training/data-storage/files
  • вам нужно будет выполнить загрузку и подать файл ввода-вывода в отдельном потоке.Android по своей сути является многопоточным и опирается на основной поток только для обновления пользовательского интерфейса.Все остальное должно быть сделано в другом потоке.Есть несколько способов сделать это.( см. Этот пост или документация ).Как только вы освоитесь с этим, вы можете перейти к RxJava .
0 голосов
/ 14 ноября 2018

Вы можете использовать BufferedReader - Javadoc

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

Затем вы можете сканировать контекст файла.

while(line = reader.readLine() != null) {
  // some code
}

Этот ответ содержит больше информации и о BufferedReader

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...