écriture.fichier json et lire ce fichier dans Android

je m écrit .fichier json et je veux lire ce fichier, mais le problème est que, quand j'essaie de lire un fichier entier sous forme de chaîne, il ajoute l'espace avant et après chaque caractère et juste à cause de caractères supplémentaires, il ne pouvait pas lire json.

le format Json est

[{"description1":"The ThinkerA bronze sculpture by Auguste Rodin. It depicts a man in sobernmeditation battling with a powerful internal struggle.","description2":"Steve JobsFounder of Apple, he is widely recognized as a charismatic pioneer ofnthe personal computer revolution.","description3":"Justin BieberBorn in 1994, the latest sensation in music industry with numerousnawards in recent years."}]

mais il donne la réponse tissée comme: ("d e S C r I p t I O N 1": "T he .....

pour la garniture supplémentaire espaces que j'ai appelé, mais stil n'a pas fonctionné: Java comment remplacer 2 ou plus espaces avec un seul espace dans la chaîne et supprimer les espaces principaux seulement

j'utilise ce code

File folderPath = Environment.getExternalStorageDirectory();
File mypath=new File(folderPath, "description.json");
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(mypath));
char[] buf = new char[1024];
int numRead=0;

while((numRead=reader.read(buf)) != -1)
{
    String readData = String.valueOf(buf, 0, numRead);
    fileData.append(readData);
    buf = new char[1024];
}
String response = fileData.toString();

la chaîne" response " contient weird response

si quelqu'un peut m'aider ?

pour écrire dans le fichier ,je m en utilisant :

FileOutputStream fos = new FileOutputStream(mypath);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeChars(response);
10
demandé sur SML 2013-01-08 20:11:44

4 réponses

writeChars écrit chaque caractère en deux octets.

http://docs.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html#writeChars(java.lang.String)

http://docs.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html#writeChar(int)

Writes a char to the underlying output stream as a 2-byte value, high byte first. If no exception is thrown, the counter written is incremented by 2.
3
répondu auselen 2013-01-09 05:37:14

Écrire ci-dessous la méthode pour Écrire des Fichier Json, Ici params est un Nom de Fichier et mJsonResponse est une Réponse du Serveur.

pour créer des fichiers dans la mémoire interne de L'Application

public void mCreateAndSaveFile(String params, String mJsonResponse) {
    try {
        FileWriter file = new FileWriter("/data/data/" + getApplicationContext().getPackageName() + "/" + params);
        file.write(mJsonResponse);
        file.flush();
        file.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Pour Lire Les Données À Partir Du Fichier Json, Ici params est le nom du fichier.

public void mReadJsonData(String params) {
    try {
        File f = new File("/data/data/" + getPackageName() + "/" + params);
        FileInputStream is = new FileInputStream(f);
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        String mResponse = new String(buffer);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
20
répondu Dipak Keshariya 2013-01-09 06:03:24

j'aime la réponse ci-dessus et édité: je viens de l'amour à partager, donc j'ai partagé qui peut être utile à d'autres.

copier et coller la classe suivante dans votre paquet et utiliser comme:

Enregistrer: MyJSON.saveData(context, jsonData);

Lire: String json = MyJSON.getData(context);

import android.content.Context;
import android.util.Log;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Created by Pratik.
 */
public class MyJSON {

    static String fileName = "myBlog.json";

    public static void saveData(Context context, String mJsonResponse) {
        try {
            FileWriter file = new FileWriter(context.getFilesDir().getPath() + "/" + fileName);
            file.write(mJsonResponse);
            file.flush();
            file.close();
        } catch (IOException e) {
            Log.e("TAG", "Error in Writing: " + e.getLocalizedMessage());
        }
    }

    public static String getData(Context context) {
        try {
            File f = new File(context.getFilesDir().getPath() + "/" + fileName);
            //check whether file exists
            FileInputStream is = new FileInputStream(f);
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            return new String(buffer);
        } catch (IOException e) {
            Log.e("TAG", "Error in Reading: " + e.getLocalizedMessage());
            return null;
        }
    }
}
14
répondu Pratik Butani 2015-11-09 04:48:28

Votre code d'écriture est le problème. Suffit d'utiliser

FileWriter fos = new FileWriter(mypath);
fos.write(response);
0
répondu Henry 2013-01-09 05:35:31