我一直在尝试以编程方式在/sdcard
中创建一个目录,但它不起作用。下面的代码总是输出directory not created.
boolean success = (new File("/sdcard/map")).mkdir();
if (!success) {
Log.i("directory not created", "directory not created");
} else {
Log.i("directory created", "directory created");
}
发布于 2010-10-04 17:43:12
到sdcard的正确路径是
/mnt/sdcard/
但是,正如前面所回答的,您不应该对其进行硬编码。如果您使用的是Android2.1或更高版本,请使用
getExternalFilesDir(String type)
否则:
Environment.getExternalStorageDirectory()
仔细阅读https://developer.android.com/guide/topics/data/data-storage.html#filesExternal
此外,您还需要使用此方法或类似的方法
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卡。如上所述,请阅读官方文档。
file.mkdirs()
创建由此文件的尾部文件名命名的目录,包括创建此目录所需的完整目录路径。
发布于 2016-03-03 23:42:42
如果这种情况发生在你的Android6和编译目标>= 23上,别忘了我们现在使用的是runtime permissions。因此,仅在清单中提供权限是不够的。
发布于 2013-10-31 02:10:13
使用mkdirs()而不是mkdir()..it对我有效:)
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");
https://stackoverflow.com/questions/3853472
复制相似问题