2011-12-22 192 views
2

我有一個非常小的問題。我正在寫一個文件到SD卡。我會告訴你兩個代碼,一個代碼工作,其他代碼不工作。它看起來是這樣的:首先 一個,寫入SD卡

new FileOutputStream("/sdcard/HelloWorld.txt") 

這工作得很好,並創建一個SD卡文件HelloWorld.txt。

現在第二個,

new FileOutputStream(android.os.Environment.getExternalStorageDirectory()+java.io.File.separator + "filetest" + java.io.File.separator + "HelloWorld.txt") 

這將引發錯誤 「/mnt/sdcard/filetest/HelloWorld.txt (No such file or directory)」。 我想知道爲什麼,因爲我的設備上有mnt/sdcard路徑,它是否找不到filetest文件夾,如果是的話,是不是應該創建filetest文件夾,如果它沒有創建之前。

謝謝。

回答

4

首先如果沒有可用做的filetest目錄,

File file = new File(android.os.Environment.getExternalStorageDirectory()+java.io.File.separator + "filetest"); 

file.mkdir(); 

然後執行代碼......

OR

File f = new File(android.os.Environment.getExternalStorageDirectory()+java.io.File.separator + "filetest" + java.io.File.separator + "HelloWorld.txt"); 

    if (!f.getParentFile().exists()); 
    { 
     f.getParentFile().mkdir(); 
    } 
+0

感謝。是的,它應該是這樣的。 – 2011-12-22 12:56:16

2

是....... 。 filetest文件夾不存在,所以你需要手動或編程創建它,並嘗試該代碼...所以你獲得成功。

你也可以創建這樣的目錄::

File wallpaperDirectory = new File("/sdcard/filetest/"); 
// have the object build the directory structure, if needed. 
wallpaperDirectory.mkdirs(); 
// create a File object for the output file 
File outputFile = new File(wallpaperDirectory, filename); 
// now attach the OutputStream to the file object, instead of a String representation 
FileOutputStream fos = new FileOutputStream(outputFile); 

使用許可:::

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