2014-03-12 54 views
0

我想創建並寫入Android的外部文件。我的最低SDK是14,我的目標SDK是18.我的清單中的正確位置有WRITE_EXTERNAL_STORAGE權限。下面是我創建並設置該文件的文件路徑要創建的dection:創建/寫入文件到外部存儲Android

String state = Environment.getExternalStorageState(); 
    if(!state.equals(Environment.MEDIA_MOUNTED)) { 
     textView.setText("No external storage mounted"); 
    } else { 
     File externalDir = Environment.getExternalStorageDirectory(); 
     File dir = new File(externalDir.getAbsolutePath() + "/tests-folder"); 
     dir.mkdir(); 
     if(!dir.exists()) { 
      Log.i(null, "Does not exist"); // This gets printed - Why?  
     } 
     File textFile = new File(dir, "test.txt"); 
     try { 
      writeTextFile(textFile, "This is a test!"); 
      String text = readTextFile(textFile); 
      textView.setText(text); 
     } catch (IOException ex){ 
      textView.setText("Something went wrong!" + ex.getMessage()); 
     } 
    } 

我不斷收到錯誤「出了錯/storage/sdcard0/tests-folder/test.txt:打開失敗:ENOENT(沒有這樣的文件或目錄)。所述writeTextFile()的方法是:

private void writeTextFile(File file, String text) throws IOException { 
    BufferedWriter writer = new BufferedWriter(new FileWriter(file)); // When I debug, it comes up until here and then returns with the exception 
    writer.write(text); 
    writer.close(); 
} 

當它撞擊在writeTextFile()方法中的第一行中,所述代碼與異常返回。我的猜測是這些文件沒有被創建。日誌行'不存在'被打印。爲什麼是這樣?我用手機和模擬器嘗試了它。我嘗試在安裝並斷開連接後斷開手機並且無用。

如果我修改文件路徑以在外部目錄的根文件夾內創建文件,則會收到EACCES Permission denied錯誤。

+0

你可以嘗試'dir.mkdirs();'如果它不存在,它將創建整個路徑,而不是隻有文件夾。 – Merlevede

+0

我試過兩種 - 沒有工作。 – ucsunil

回答

0

我想通了哪裏出了問題 - 它看起來像這個特定的文件破壞了某些東西或觸發了一些奇怪的錯誤。我在同一文件夾中的另一個包中創建了另一個具有不同名稱的活動,並且運行良好(代碼被複制粘貼,因此根本沒有任何變化)。然後我刪除這個文件並重新創建它,它運行得很好。不知道爲什麼會發生這種情況,但爲了防止其他人在將來遇到這種情況,將其排除在外。

在此之前,我創建了一個單獨的項目並輸入相同的代碼,並且它工作。所以我回來試着做一個Project - > Clean through Eclipse,但那也行不通。

0

您確定您的路徑中的sdcard0之間沒有缺少/

+1

沒有'/' - sdcard0是一個術語 – ucsunil

相關問題