首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在/sdcard中创建目录失败

在/sdcard中创建目录失败
EN

Stack Overflow用户
提问于 2010-10-04 15:51:27
回答 9查看 109.1K关注 0票数 58

我一直在尝试以编程方式在/sdcard中创建一个目录,但它不起作用。下面的代码总是输出directory not created.

代码语言:javascript
复制
boolean success = (new File("/sdcard/map")).mkdir(); 
if (!success) {
    Log.i("directory not created", "directory not created");
} else {
    Log.i("directory created", "directory created");
}
EN

回答 9

Stack Overflow用户

发布于 2010-10-04 17:43:12

到sdcard的正确路径是

代码语言:javascript
复制
/mnt/sdcard/

但是,正如前面所回答的,您不应该对其进行硬编码。如果您使用的是Android2.1或更高版本,请使用

代码语言:javascript
复制
getExternalFilesDir(String type) 

否则:

代码语言:javascript
复制
Environment.getExternalStorageDirectory()

仔细阅读https://developer.android.com/guide/topics/data/data-storage.html#filesExternal

此外,您还需要使用此方法或类似的方法

代码语言:javascript
复制
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)) {
    // We can read and write the media
    mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    // We can only read the media
    mExternalStorageAvailable = true;
    mExternalStorageWriteable = false;
} else {
    // Something else is wrong. It may be one of many other states, but all we need
    //  to know is we can neither read nor write
    mExternalStorageAvailable = mExternalStorageWriteable = false;
}

然后检查您是否可以访问SD卡。如上所述,请阅读官方文档。

另一种选择是,也许需要使用mkdirs而不是mkdir

代码语言:javascript
复制
file.mkdirs()

创建由此文件的尾部文件名命名的目录,包括创建此目录所需的完整目录路径。

票数 16
EN

Stack Overflow用户

发布于 2016-03-03 23:42:42

如果这种情况发生在你的Android6和编译目标>= 23上,别忘了我们现在使用的是runtime permissions。因此,仅在清单中提供权限是不够的。

票数 7
EN

Stack Overflow用户

发布于 2013-10-31 02:10:13

使用mkdirs()而不是mkdir()..it对我有效:)

代码语言:javascript
复制
File folder = new File(Environment.getExternalStorageDirectory()+"/Saved CGPA");
if(!folder.exists()){
    if(folder.mkdirs())
    Toast.makeText(this, "New Folder Created", Toast.LENGTH_SHORT).show();
}

File sdCardFile = new File(Environment.getExternalStorageDirectory()+"/Saved CGPA/cgpa.html");
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3853472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档