【问题标题】:Android mkdir not making folderAndroid mkdir 没有创建文件夹
【发布时间】:2011-08-22 22:47:48
【问题描述】:

今晚我在做一些我认为很简单的事情时遇到了问题...在 /mnt/sdcard 中创建一个文件夹。

我已设置以下权限:

<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。我只是无法弄清楚这一点,因为所有迹象都表明它应该起作用。我还尝试过将手机与 PC 断开连接,以防 SD 卡正在安装或我目前正在使用手机而不是模拟器进行开发。说到这里,debuggabletrue 可能会阻止它制作文件夹吗?

谢谢!

【问题讨论】:

    标签: android mkdir


    【解决方案1】:

    尝试使用不同的设备。我的模拟器设备存在问题,但是当我连接我的 Oneplus 5T 时,它创建了一个文件夹(我的 Oneplus 没有外部 MicroSD)。

    但与此同时,我的模拟器 (Pixel 3) 根本没有创建文件夹。

    至少权限都是好的。

    【讨论】:

      【解决方案2】:

      检查你把他们必须以这种方式去的权限:

       <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"
      

      【讨论】:

        【解决方案3】:

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

        File.mkdirs() 方法将创建所有需要的目录; mkdir() 只会在路径名中创建 last 目录。

        【讨论】:

        • 就是这样!我试图发布一个答案,因为我在发布后不久就发现了这一点,但作为一个新用户,它不会让我回答我自己的帖子。我会尽快检查它。谢谢!
        • 天啊!大多数情况下,这里的自动强制执行都足够合理(并且在打击垃圾邮件方面非常有效),但新用户有时会首当其冲受到这些限制的影响。无论如何,欢迎来到SO! :)
        猜你喜欢
        • 1970-01-01
        • 2016-09-25
        • 2014-11-30
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多