2015-11-17 6 views
0

У меня проблема, у меня есть список MyObject, и я хочу записать это в файл в json.FileWriter не пишет строку с длиной 78510

Итак, я разобрал свой список с gson для json, и я написал строку в файле, но ничего не написал, что файл был создан, но пуст (0 октет).

если у моего List<MyObject> есть 60 элементов, и я разбираю его на json, строка имеет длину 14482, а файл-файл отлично работает.

, если у моего List<MyObject> есть элемент 60+, и я разбираю его, чтобы json Filewriter ничего не делал, и файл пуст. Для Exemple если мой список имеет 300 пункта длина 78909

Вот мой код написать мой список в файле:

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

ответ

0

Попробуйте добавить

out.flush(); 

между письмом и закрыванием файл, чтобы убедиться, что он был полностью выполнен.

Это потому, что вы используете BufferedWriter с внутренним буфером размером 32768

+0

если я удалить размер это же , Я попытаюсь сохранить один за другим не весь список – Slasch

+0

@Slasch Добавил ли запрос метода out.flush() перед закрытием записи? – Prim

+0

Да, но без изменений файл пуст – Slasch

0

попытка использования PrintWriter/PrintStream писать в file.like это:

PrintWriter printWriter=new PrintWriter(writer); 
printWriter.println(jsonStringTrace); 
printWriter.close(); 
Смежные вопросы