Android中不能使用mkdir文件夹

时间:2014-10-06 09:11:52

标签: android camera directory photo mkdir

我遇到运行函数Mkdir()的问题。我该怎么办? 我已经添加了读/写权限:

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

以下是我的代码段:

private File getTempFile(Context context)
    {

        File path;
        //Find the dir to save cached images
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){

            path=new File(android.os.Environment.getExternalStorageDirectory(),"/Tanker/Foto/");
        }
        else {
            path=context.getCacheDir();
        }
        String pictureFileName = Long.toHexString(System.currentTimeMillis())+".jpg";
        if (!path.exists())
        {
            path.mkdir();
        }
        return new File(path, pictureFileName);
    }

请帮忙。

2 个答案:

答案 0 :(得分:3)

 path=new File(android.os.Environment.getExternalStorageDirectory(),"/Tanker/Foto/");

mkdir不会创建完整路径。您必须使用mkdirs作为

来自文档

  

创建此抽象路径名所指定的目录,包括any   必要但不存在的父目录。

e.g。

    if (!path.exists()) {
        path.mkdirs();
    }

答案 1 :(得分:1)

创建此文件命名的目录,假设其父项存在。如果你还想创建缺少的父母,请使用mkdirs()。

请注意,此方法在失败时不会抛出IOException。呼叫者必须检查返回值。另请注意,如果目录已存在,则此方法返回false。如果要在返回时知道目录是否存在,请使用(f.mkdir()|| f.isDirectory())或者只是忽略此方法的返回值,只需调用isDirectory()。 返回

true if the directory was created, false on failure or if the directory already existed. 

检查返回值 e,而不是找到问题的正确理由。