5

一切都在问题之中。这是我的代码:

    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 中编写一个小文件管理器,我想添加创建目录的可能性。没有例外,变量success总是返回false。有人可以告诉我我的代码有什么问题吗?

谢谢你的建议!!

[编辑]

顺便说一句,当手机处于开发模式时,应用程序是否对 sdcard 具有写入权限?我正在手机上编程(Acer 液体)

4

4 回答 4

11

您必须添加此权限:

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

顺便说一句,不知道你是如何获得 SDcard 目录的......但它必须是这样的:

File sdDir = Environment.getExternalStorageDirectory();

这很重要,因为一些程序员过去认为 SDCard 始终是 /sdcard,但它可能会改变。

于 2011-01-23T20:57:34.843 回答
2

您将需要添加

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

到您的清单文件,告诉 Android 要求用户允许您的应用程序。

于 2011-01-23T20:57:14.180 回答
2

首先,请使用File将 aFile作为您的目录,将 aString作为您想要的子目录的构造函数。

除此之外,您很可能正在尝试创建一个不允许您创建的目录,或者是因为:

  • currentDirectory不存在,或
  • currentDirectory指向板载闪存上不允许写入的位置,或
  • currentDirectory指向外部存储上的一个地方,您没有WRITE_EXTERNAL_STORAGE权限
于 2011-01-23T20:58:23.127 回答
0

而不是boolean success = f.mkdir();使用

boolean success = f.mkdirs();

这解决了我的问题(我使用了与您相同的参考代码并且遇到了同样的问题)。

于 2016-10-12T09:54:52.943 回答