一切都在问题中。这是我的代码:
private void createDirectory(File currentDirectory) {
File f = null;
try {
f = new File(currentDirectory.getCanonicalPath() + "/directory"
+ count);
boolean success = f.mkdir();
if (!success) {
Toast.makeText(currentContext,
f.getName() + " could not be created", 15).show();
}
} catch (IOException ioe) {
Toast.makeText(currentContext,
f.getName() + " could not be created", 15).show();
}
count++;
}
我正在Android中编写一个小文件管理器,我想添加创建目录的可能性。没有异常,变量成功总是返回false。 有人能告诉我我的代码有什么问题吗?
谢谢你的建议!!
[编辑]
顺便说一句,当手机处于开发模式时,应用程序是否在SD卡上有写访问权限?我在手机上编程(Acer液体)
答案 0 :(得分:11)
您必须添加此权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
顺便说一句,不知道你是如何获得SDcard目录的......但必须这样:
File sdDir = Environment.getExternalStorageDirectory();
这很重要,因为有些程序员会认为SD卡总是/ sdcard,但它可能会改变。
答案 1 :(得分:2)
您需要添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
到你的清单文件,告诉Android要求用户允许你的应用程序。
答案 2 :(得分:2)
首先,请使用File
构造函数,该构造函数为您的目录选择File
,并为您所需的子目录使用String
。
除此之外,您很可能正在尝试创建一个不允许的目录,因为:
currentDirectory
不存在,或currentDirectory
指向机载闪存存储器上不允许写入的位置,或currentDirectory
指向外部存储空间中的某个位置但您缺少WRITE_EXTERNAL_STORAGE
权限答案 3 :(得分:0)
而不是boolean success = f.mkdir();
使用
boolean success = f.mkdirs();
解决了我的问题(我使用了与你相同的参考代码并遇到了同样的问题)。