2013-08-07 1 views
1

Je récupère/télécharge JSON flux comme InputStreamReader et je dois passer ce InputStreamReader à JsonReader pour l'analyser.Comment enregistrer et récupérer InputStream dans un fichier texte avec moins de surcharge

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

Tout va bien. Mais je veux mettre en cache ce InputStreamReader ou ces données dans un autre format dans le stockage interne pour une utilisation ultérieure. Pour la mise en cache, j'utilise un fichier texte pour enregistrer. (AFAIK, cache Android par défaut enregistre les données dans le stockage externe et certains appareils n'ont pas de stockage externe).

Pour enregistrer ce fichier, j'utilise le fichier .txt. Mais je suis seulement en mesure d'enregistrer/cache String les données formatées dans le fichier et le lire comme String. Voici le code que je l'ai écrit à ce jour pour écrire & fichier de lecture:

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

Mais cette approche prend trop de conversion:

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

Comment peut-il sauver/cache ces données avec moins de frais généraux? Peut-être inputStreamReader doit être converti en outputStreamReader ou quelque chose comme ça pour être accessible en écriture. Mais je ne peux pas comprendre le code associatif pour le faire. Quel devrait être le code? Puis-je également mettre ces données en cache par la méthode proposée par android pour une utilisation ultérieure au lieu de l'enregistrer sous le nom de fichier .txt?

Répondre

0

Vous ne pouvez pas court-circuiter ce processus car String est le meilleur format pour enregistrer des informations dans le fichier AFAIK. Aussi inputStreamReader & inputStream ne sont pas appropriés objet à écrire. Il peut y avoir une autre meilleure réponse explicative :)

Questions connexes