2013-03-18 48 views
-1

我已經被寫入數據文件的應用程序。我第一次運行它時,它變得宏大,並將1000個值寫入文件。然後,我使用此代碼關閉應用程序應用程序寫入文件

finish(); 
System.exit(0); 

當我點擊停止按鈕時會發生這種情況。

當我停藥後再次運行它,說在幾分鐘內,就只寫幾個值到一個新的文件,在同一時間框架。

這裏是我用來寫文件的代碼:

public void write(String message) { 

    try { 
     if (out == null) { 
      FileWriter datawriter = new FileWriter(file, true); 
      out = new BufferedWriter(datawriter); 
      //out.write("X Value, Y Value, Z Value \n"); 
     } 
     if (file.exists()) { 
      out.append(message); 
      out.flush();  
     } 

任何深入瞭解爲什麼發生這種情況,將不勝感激。

感謝

+0

Android支持'FileWriter'?爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-03-18 15:47:21

+0

它寫的是什麼值?他們來自哪裏?你確定應該有成千上萬? – iamnotmaynard 2013-03-18 15:49:57

+0

@AndrewThompson它應該做的,它的值寫入我期待,該區域我需要他們 – ELSheepO 2013-03-18 15:51:38

回答

0

在整理做out.close()。這可能是一個系統惡化。

+0

,而不是'finish(); System.exit(0);'? – ELSheepO 2013-03-18 15:59:19

+0

不,之前。我不知道完成什麼。 – 2013-03-18 18:02:10

+0

它不起作用,out.close需要一個類或變量。我應該指出,我正在關閉另一個班級的應用程序,並且該文件正在另一個班級中發生。 – ELSheepO 2013-03-19 12:34:03

0

不要叫

System.exit(0); 

this post知道爲什麼。

此外,您不應該在致電finish()之前致電flush(),而只需撥打close()

嘗試使用此代碼:

public void write(String message) { 
    try { 
     if (out == null) { 
      FileWriter datawriter = new FileWriter(file, true); 
      out = new BufferedWriter(datawriter); 
     } 
     out.append(message); 
     out.flush(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

我需要調用它來刷新緩衝區,至少這是我認爲需要的。當我接近並且沒有沖洗之前,它正在崩潰。讀這篇文章,我應該把它作爲'finish();'? – ELSheepO 2013-03-18 19:42:32

相關問題