2011-05-11 64 views
23

今晚我正在做一些我認爲會很簡單的問題...在/ mnt/sdcard中製作一個文件夾。Android mkdir沒有製作文件夾

我已經設置瞭如下權限:

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

Main.java具有以下,以使該文件夾: 「文件夾中創建」

public class Main extends TabActivity { 
    static int index = 1; 
    private static final String TAG = "Main";  

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     File folder = new File(Environment.getExternalStorageDirectory() + "/tallgrass/images"); 
     boolean success = false; 
     if(!folder.exists()){ 
      success = folder.mkdir(); 
     } 
     if (!success){ 
      Log.d(TAG,"Folder not created."); 
     } 
     else{ 
      Log.d(TAG,"Folder created!"); 
     } 
    } 

我得到的消息在我的日誌中,但當我檢查/mnt/sdcard/sdcard都沒有文件夾。我曾嘗試撥打:

Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) 

並且它返回true。我無法弄清楚這一點,因爲所有跡象都指出它應該起作用。我也嘗試過,在SD卡掛載的情況下與手機斷開連接,或者我正在使用手機而不是仿真器進行開發。說起來,debuggabletrue可能阻止它製作文件夾?

謝謝!

回答

42

/mnt/sdcard/tallgrass/目錄是否存在? (我猜不是,但你永遠不知道。)

File.mkdirs()方法將創建所有需要的目錄; mkdir()只會在路徑名中創建最後的目錄。

+0

這就是它!我試圖發佈一個答案,因爲我發現在發佈後不久,但作爲一個新用戶,它不會讓我回答我自己的帖子。我會盡快檢查一下它。謝謝! – 2011-05-11 02:41:37

+0

D'oh!這裏的自動執行主要是足夠合理的(並且在打擊垃圾郵件方面非常有效),但是新用戶有時會首先受到這些限制。無論如何,歡迎來到SO! :) – sarnold 2011-05-11 02:44:12

0

檢查,你是把他們必須以這種方式去權限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="edu.una.info.app"> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 

<application android:allowBackup="true" 
    android:label="@string/app_name" 
    android:icon="@drawable/ic_launcher" 
    android:theme="@style/AppTheme"> 

    <activity 
     android:name="edu.una.info.SplashScreenActivity"