2015-11-17 61 views
0

我有一個問題寫串,我有myObject的名單,我想在JSON文件寫這個。的FileWriter不長78510

所以我分析我的名單與GSON以JSON和我寫的字符串中的文件,但沒有任何已寫入文件是創建,但爲空(0字節的)。

如果我的List<MyObject>有60項,我解析它爲json,字符串有14482長,並且Filewriter工作正常。

如果我List<MyObject>有60多個項目,我解析它以JSON的FileWriter的什麼也不做,而該文件是空的。 對於爲例,如果我的列表中有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();