如何以较少的开销在文本文件中保存和检索InputStream

时间:2013-08-07 18:49:35

标签: android file caching inputstreamreader

我正在检索/下载JSON Feed InputStreamReader,我需要将此InputStreamReader传递给JsonReader进行解析。

JsonReader reader = new JsonReader(isr); // isr is the InputStreamReader instance

一切都很好。但我希望将此InputStreamReader或其他格式的数据缓存到内部存储中以供日后使用。对于缓存,我使用文本文件进行保存。 (AFAIK,android默认缓存将数据保存在外部存储中,而某些设备没有外部存储)。

为了保存此文件,我使用的是.txt文件。但我只能将String格式化数据保存/缓存到文件中,并将其作为String读取。这是我到目前为止编写的代码。读取文件:

public static void writeObject(Context context, String key, Object object)
        throws IOException {
    FileOutputStream fos = context
            .openFileOutput(key, Context.MODE_PRIVATE);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(object);
    oos.close();
    fos.close();
}

public static Object readObject(Context context, String key)
        throws IOException, ClassNotFoundException {
    FileInputStream fis = context.openFileInput(key);
    ObjectInputStream ois = new ObjectInputStream(fis);
    Object object = ois.readObject();
    return object;
}

但这种方法转换太多了:

inputStreamReader -> inputStream -> String //to save
String -> inputStream -> inputStreamReader // retrieve  

如何以较少的开销保存/缓存此数据?也许inputStreamReader可能需要转换为outputStreamReader或类似的东西才能写入。但我无法弄清楚这样做的关联代码。应该是什么代码?我也可以通过android提出的方式缓存这些数据,以便以后使用它将其保存为.txt文件吗?

1 个答案:

答案 0 :(得分:0)

您不能简短此过程,因为String是保存文件AFAIK中信息的最佳格式。 inputStreamReader& inputStream不适合写入。可能还有其他更好的解释性答案:)