Как создать каталог в Android? - PullRequest
5 голосов
/ 23 января 2011

Все в вопросе.Вот мой код:

    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.Может кто-нибудь сказать мне, что не так мой код ??

Спасибо за ваш совет!в режиме Developpement приложение имеет доступ на запись на SD-карту?Я программирую на своем телефоне (Acer Liquid)

Ответы [ 4 ]

11 голосов
/ 23 января 2011

Вы должны добавить это разрешение:

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

Кстати, не уверен, как вы получаете каталог SDcard ... но это должно быть так:

File sdDir = Environment.getExternalStorageDirectory();

Это важно, потому что некоторые программисты считают, что SDCard - это всегда / SDCard, но она может измениться.

2 голосов
/ 23 января 2011

Во-первых, пожалуйста, используйте конструктор File, который принимает File для вашего каталога и String для желаемого подкаталога.

Помимо этого, скорее всего, вы пытаетесь создать каталог, в которомвам не разрешено, либо потому что:

  • currentDirectory не существует, либо
  • currentDirectory указывает на место на встроенной флэш-памяти, где вам не разрешеноили
  • currentDirectory указывает на место на внешнем хранилище, и вам не хватает разрешения WRITE_EXTERNAL_STORAGE
2 голосов
/ 23 января 2011

Вам нужно будет добавить

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

в файл манифеста, чтобы сообщить Android, чтобы он попросил пользователя разрешить ваше приложение.

0 голосов
/ 12 октября 2016

вместо boolean success = f.mkdir(); используйте

boolean success = f.mkdirs();

, что решило мою проблему (я использовал тот же код ссылки, что и у вас, и у меня была та же проблема)

...