2011-11-25 141 views
1

我已經研究了一段時間的這個問題,我只找到了非常複雜的答案,所以我很困惑。請記住,我不是一個專家程序員,所以不要指望我知道這件事!使用'FileWriter'在Android上的SD卡上寫入文本文件

所有我想要做的是打印字符的新行位於Android的SD卡的下載文件夾中的文本文件。我將模擬器設置爲擁有SD卡,並將文本文件放入下載文件夾中。這段代碼用於數據庫類,它將訪問SD卡中的文本文件以讀取數據。我知道這個類在Android之外工作,所以假設所有的方法都是按照他們應該讀取數據的方式工作的!

我得到一個IOException當我運行在另一類這個方法:

public void addRecordToDataBase(ChildRecord c) throws IOException 
{ 
    FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt"); 
    PrintWriter out = new PrintWriter(outFile); 
    out.println(c.printToDataBase()); 
    out.close(); 
} 

奇怪的是,我可以使用相同的路徑從數據庫只是在其他方法精細讀;那裏沒有問題。我只是不能寫信給它。我讀過一些地方,你可以使用「普通的Java方法」在Android上寫入SD卡,而不會在整個地方出現那些瘋狂的「OutputStream」事物。這是真的?我調試這件事情,並發現的是拋出異常的代碼行就在這裏:

FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt"); 

如果任何人有任何想法,爲什麼我這個迷途IOException異常,我會很感激!我嘗試了所有Android想使用的瘋狂方法,但我認爲我迷失了方向,所以我只是恢復了我知道該怎麼做的方法。

非常感謝!

回答

1

我的猜測是你不能通過寫入權限來訪問這樣的目錄,至少是這種方式。您是否看過http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

該引用而這一次(http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)),解釋getExternalFilesDir是如何工作的,可能對你有所幫助!

+0

我看了看這個,它開始變得更有意義了。 getExternalFilesDir()和我之間有什麼區別?不getExternalFilesDir()獲取外部磁盤的路徑?我已經驗證我的代碼確實可以訪問外部磁盤(一張SD卡,我也應該澄清,這不需要在每部手機上工作,只需要一部特定的手機)。 – Thanizer