2015-11-17 1 views
0

J'ai un problème, j'ai une liste de MyObject, et je veux écrire cela dans un fichier dans json.FileWriter n'écrit pas de chaîne avec 78510 longueur

Donc, je parse ma liste avec gson à json et j'écris la chaîne dans le fichier, mais rien n'a été écrit le fichier a été créé mais est vide (0 octet).

si mes List<MyObject> ont 60 éléments et je l'analyse en json, la chaîne a une longueur de 14482, et le Filewriter fonctionne bien.

Si mon List<MyObject> a 60+ élément et je l'analyse pour json le Filewriter ne rien faire, et le fichier est vide. Pour exemple si ma liste ont 300 objet la longueur est 78909

Voici mon code pour écrire ma liste dans le fichier:

private void saveTrace() { 
    try { 
     Log.d(mapsActivity.TAGDEBUG, "Sauvegarde de la trace automatique"); 
     Log.d(mapsActivity.TAGDEBUG, "Nombre de point compris dans la trace automatique: " + String.valueOf(listBeanTraceUser.size())); 
     String sFileNameTrace = "trace_" + currentDate + ".xml"; 
     File traceFile = new File(root, sFileNameTrace); 

     MediaScannerConnection.scanFile(mapsActivity, new String[]{traceFile.getAbsolutePath()}, null, null); 

     FileWriter writer = new FileWriter(traceFile); 
     BufferedWriter out = new BufferedWriter(writer, 32768); 
     String jsonStringTrace = gson.toJson(listBeanTraceUser); 
     Log.d(mapsActivity.TAGDEBUG, "lenght jsonStringTrace : " + String.valueOf(jsonStringTrace.length())); 
     out.write(jsonStringTrace); 
     out.close(); 
    } catch (Exception e) { 
     Log.d(mapsActivity.TAGDEBUG, "Erreur lors de la Sauvegarde de la trace automatique"); 
     e.printStackTrace(); 
    } 
} 

Répondre

0

Essayez d'ajouter

out.flush(); 

entre l'écriture et la fermeture de la fichier pour s'assurer qu'il a été complètement fait.

C'est parce que vous utilisez un BufferedWriter avec un tampon interne avec une taille de 32768

+0

si je retire la taille, il est le même . Je vais essayer d'enregistrer un par un pas toute la liste – Slasch

+0

@Slasch Avez-vous ajouté l'appel de méthode out.flush() requis avant de fermer l'écrivain? – Prim

+0

oui, mais pas de changement le fichier est vide – Slasch

0

essayez d'utiliser PrintWriter/PrintStream écrire en file.like ceci:

PrintWriter printWriter=new PrintWriter(writer); 
printWriter.println(jsonStringTrace); 
printWriter.close();