2010-04-12 105 views
11

對不起,曖昧的標題,但我做了以下寫一個簡單的字符串到一個文件:無法寫入SD卡 - canWrite是返回false

try { 
     File root = Environment.getExternalStorageDirectory(); 
     if (root.canWrite()){ 
      System.out.println("Can write."); 
      File def_file = new File(root, "default.txt"); 
      FileWriter fw = new FileWriter(def_file); 
      BufferedWriter out = new BufferedWriter(fw); 
      String defbuf = "default"; 
      out.write(defbuf); 
      out.flush(); 
      out.close(); 
     } 
     else 
      System.out.println("Can't write."); 
}catch (IOException e) { 
     e.printStackTrace(); 
} 

root.canWrite()似乎返回false每次。我沒有運行這個模擬器,我通過USB將我的android Eris插入到我的電腦中,並通過Eclipse運行我的手機上的應用程序。有沒有辦法讓我的應用程序權限,所以這不會發生?

此外,此代碼似乎創建文件default.txt但如果它已經存在,它會忽略創建,只是打開它寫或我必須趕上類似FileAlreadyExists(如果存在這樣的例外),如何然後打開它並寫入?

感謝任何幫助傢伙。

回答

17

有沒有辦法讓我的應用程序 權限,所以這不會發生?

您需要WRITE_EXTERNAL_STORAGE權限。

您還需要在開發機器上沒有安裝SD卡 - 計算機或手機可以訪問SD卡,但不能同時訪問SD卡。

+0

我unmout手機從電腦,但仍然出現錯誤,我在AndroidManifest.xml文件中添加了** WRITE_EXTERNAL_STORAGE **權限,這要感謝提前。 – twlkyao 2013-12-26 15:07:57

0

附加WRITE_EXTERNAL_STORAGE權限清單文件

,如果有必要就以下

  1. 堵塞的機器人到您的計算機
  2. 拉下經理(頂部的酒吧時間,對不起不知名,現在不記得)
  3. 打「usb connected」
  4. 窗口彈出在你的電腦上顯示你的內容S d卡
  5. 熱播的「關閉USB存儲設備」時,即可大功告成
  6. 斷開USB連接線(如果你想),然後你的Droid可以讀取SD卡再次