2011-11-18 119 views
1

我在Android中嘗試了一個簡單的文件寫入程序。在Android中使用SD卡寫入文件

try 
      { 
       //File f1=new File("/sdcard/Prag.txt"); 
       File f1=new File("J:\\Prag.txt"); 
       BufferedWriter out = new BufferedWriter(new FileWriter(f1,true)); 
       out.write("Pragadheesh" + "\n"); 
       out.close(); 

       } catch (IOException ioe) 
        {ioe.printStackTrace();} 

但是異常正在受到打擊。我怎樣才能解決這個問題?

[編輯]: 我試過File f1=new File(Environment.getExternalStorageDirectory() + "//Prag.txt"); 和F1值= /mnt/sdcard/Prag.txt 但仍然是例外被擊中。我在清單文件

[解決方案] 變更許可也按Krishnabhadra的答覆,我必須確保你的SD卡沒有安裝在PC上

+0

發佈錯誤日誌.. – user370305

回答

8

Android是基於Linux所以windows風格的路徑一樣"J:\\prag.txt"將無法工作。在Linux路徑是這樣的:"/folder1/folder2/file.txt"

也不要使用硬編碼路徑,因爲不同的手機可能有不同的SD卡路徑。因此,您應該使用Environment.getExternalStorageDirectory()以編程方式提供SD卡的路徑。

所以使用:

File f1=new File(Environment.getExternalStorageDirectory() + "Prag.txt"); 

也通過添加必要的權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

裏面您的清單,外面某處標記application

+0

I試過File f1 = new File(Environment.getExternalStorageDirectory()+「//Prag.txt」);並且f1值= /mnt/sdcard/Prag.txt但是仍然發生異常。我已經在清單文件中更改了權限 – SyncMaster

+0

這個異常說的是什麼?(在stacktrace後也是) – Caner

1

您是否在清單中設置了必需的權限?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
1

這是什麼路 「j:\ Prag.txt」; Android doesn't recognize any drive path like system

使用它的SD卡路徑。

File f1=new File(Environment.getExternalStorageDirectory()+"/Prag.txt"); 

也在清單文件中提及權限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

我試過文件f1 = new File(Environment.getExternalStorageDirectory()+「//Prag.txt」);並且f1值= /mnt/sdcard/Prag.txt但是仍然發生異常。我已經在清單文件 – SyncMaster

+0

中更改了許可權,這是例外情況嗎?發佈錯誤日誌。 – user370305

+0

根據Krishnabhadra的回覆,我不得不確保你的SD卡沒有安裝在PC上 – SyncMaster

2

替換:

File f1=new File("J:\\Prag.txt"); 
BufferedWriter out = new BufferedWriter(new FileWriter(f1,true)); 

有:

BufferedWriter out = new BufferedWriter(new FileWriter(Environment.getExternalStorageDirectory(),"prag.txt")) 
3

以上所有的答案都useful..But記得一個更thing..Make確保您的SD卡沒有安裝在PC上。一次只能有一個設備訪問SDCard。即計算機或手機都可以訪問SD卡,但不能同時訪問。如果它安裝在PC上,那麼您的代碼將無法工作。請參閱this線程