Лучшие практики для чтения JSON из URL и сохранения его на SDCard для автономного использования - PullRequest
0 голосов
/ 14 октября 2011

Я использую GSON для анализа некоторых потоков JSON в различных моих приложениях.

Я использовал этот учебник и этот код, чтобы заставить его работать: http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

InputStream source = retrieveStream(url);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);

//***************************************************
//Should I add some code here to save to SDCARD?
//***************************************************

SearchResponse response = gson.fromJson(reader, SearchResponse.class);
List<Result> results = response.results;
for (Result result : results) {
    Toast.makeText(this, result.fromUser, Toast.LENGTH_SHORT).show();
}

Мой вопрос задан в комментарии: Что я должен сделать, чтобы сохранить этот InputStreamReader в моем SDCArd для автономного использования?

Я много гуглил, но не могу найти способ добиться этого.

Полагаю, что как только у меня будет ответ, я заменю 3 первую строку кода на:

InputStream source = new InputStream("/sdcard/my_json_file.txt");

Большое спасибо за любую помощь, я думаю, я не единственный, кто должен этого достичь ...

1 Ответ

0 голосов
/ 14 октября 2011
  1. Создайте FileOutputStream для файла, в который вы хотите записать.
  2. Скопируйте source в созданный вами FileOuputStream - см. Ниже -
  3. Закрыть source
  4. Сделайте, как вы сказали, и создайте новый FileInputStream из пути к созданному файлу
  5. Отправьте этот новый поток вашему InputStreamReader

     public static void copyStream(InputStream input, OutputStream output)
        {
            byte[] buffer = new byte[32768];
            int read;
            while ((read = input.read(buffer, 0, buffer.length)) > 0)
            {
                output.write (buffer, 0, read);
            }
        }
    
...