我想創建並寫入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錯誤。
你可以嘗試'dir.mkdirs();'如果它不存在,它將創建整個路徑,而不是隻有文件夾。 – Merlevede
我試過兩種 - 沒有工作。 – ucsunil