é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);
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.
É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();
}
}
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;
}
}
}
Votre code d'écriture est le problème. Suffit d'utiliser
FileWriter fos = new FileWriter(mypath);
fos.write(response);