从URL读取JSON的最佳实践,并将其存储在SDCard上以供离线使用

时间:2011-10-14 14:28:43

标签: android json parsing caching inputstream

我正在使用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以供离线使用?

我用Google搜索了很多但找不到实现此目的的方法。

我想,一旦得到答案,我将用以下代码替换第3行代码:

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

非常感谢任何帮助,我想我不是唯一需要实现这一目标的人......

1 个答案:

答案 0 :(得分:0)

  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);
            }
        }