我試圖在手機的外部存儲(SD卡)中創建一個文件。Environment.getExternalStorageDirectory()不起作用
File F = new File(Environment.getExternalStorageDirectory() + File.separator + "MyBrand" + File.separator + "MyApp" + File.separator + "MyFile.srl");
但是這是在內部存儲區創建。我檢查了Windows資源管理器。調試時,F
的路徑是「/mtn/sdcard/MyBrand/MyApp/MyFile.srl」,這是錯誤的,因爲在Windows資源管理器中,SD卡的名稱實際上是「SD卡」(帶有空格)。我也在getExternalStorageDirectory()的末尾嘗試了.getAbsolutePath
`,但它做了完全相同的事情。
我創建這個文件代碼:
if (F.exists() == false)
{
try
{
F.getParentFile().getParentFile().mkdir();
F.getParentFile().mkdir();
F.createNewFile();
}
catch (IOException e)
{
e.printStackTrace();
}
scr_save();
}
else
scr_load();
它做的mkdirs()和createNewFile()就好了,但scr_save和scr_load總是拋出異常,要麼FileNotFound或IOException異常。
編輯: 我也一直在測試它,當沒有插入我的電腦,只是爲了確保沒有干擾。爲了安全起見,我總是刪除路徑和文件,然後拔掉它。它似乎創建目錄和文件,但然後不正確地閱讀它(它可能無法正確序列化?我使用此文件來存儲序列化的對象)。編輯: 最初有一個錯誤。我將路徑+文件名作爲F的單個參數。現在,我將路徑和文件名作爲2個獨立的字符串傳遞。不過,我仍然遇到了同樣的問題:(
我有正確的權限在我的清單(.WRITE_EXTERNAL_STORAGE)
我使用的是Windows 7 64位,也是Eclipse中的64位版本。我的手機是LG-MS770。
無論如何請幫忙。不知道爲什麼getExternalSorage不工作。
http://stackoverflow.com/questions/5694933/find-an-external-sd-card-location – gipinani