2011-08-10 59 views
0

我已經開發出一種服務,當我收到「ON_BOOTUP_COMPLETED」的意圖,這將啓動「的onCreate」我的服務我寫的邏輯來創建在SD一個文本文件中刪除,文件都可以從SD卡

設備的卡。

下面是我已經習慣了這樣做的邏輯:

 File abc = new File(Environment.getExternalStorageDirectory()+"\abc.txt"); 
     if(!abc .exists()) 
      abc.createNewFile(); 
     abcwriter = new FileWriter(abc); 

我在其他方法使用「abcwriter」寫在文本文件中的一些內容。 到目前爲止,它工作正常。

但是當重新啓動設備時,我發現「abc.txt」文件正在重新創建。

但我在創建文件「if(!abc .exists())」前進行了檢查。但是仍然創建新文件。

我懷疑當我重新啓動設備時,我的文件被刪除。這是Android的行爲.. ??

如果這是請幫助我,我可以做的,以確保我的文件不會再次創建。

+0

我完全看不懂的代碼,你的第一個兩行。爲什麼要檢查Android外部存儲目錄是否存在? 「abc.txt」文件名存儲在哪裏? –

+0

它的錯誤,我編輯的代碼 – brig

+0

你試過使用新的文件(「file://」+ Environment.getExternalStorageDirectory()。getAbsolutePath()+「/abc.txt」)? –

回答

1

如果要附加到文件,則必須使用下面的構造函數並將true作爲第二個參數傳遞。否則,每次運行代碼時(當你重新啓動時),它都會被覆蓋。同時,你也可以免去createNewFile()的調用,你不需要它,因爲編寫者會創建它。

FileWriter(File file, boolean append) 
0

abcwriter = new FileWriter(abc); - >此行(重新)創建該文件。

確保在需要的時候它只是叫:

File abc = new File(Environment.getExternalStorageDirectory()+"\abc.txt"); 
if(!abc.exists()) { 
    // abc.createNewFile(); -> this is not needed since following line handles this 
    abcwriter = new FileWriter(abc); 
}