Как сохранить и извлечь InputStream в текстовом файле с меньшими издержками
Я получаю / скачиваю JSON
кормить как 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 ответ
Вы не можете сократить этот процесс как String
лучший формат для сохранения информации в файле AFAIK. Также inputStreamReader
& inputStream
не подходит объект для записи. Там может быть другой лучший объяснительный ответ:)