2016-12-28 2 views
0

Я пытаюсь создать файл для ведения журнала, но когда я создаю файл, я получаю сообщение об ошибке «Файл или каталог». Я не уверен, что я делаю неправильно. Это код, который делает файл:Файл журнала Android IO - Ошибка файла/каталога

File directory = new File(Environment.DIRECTORY_DOCUMENTS,"test"); 
    directory.mkdirs(); 

    File file = new File(directory, fileName.trim()+".txt"); 

    if(!file.exists()){ 
     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return false; 
     } 

    } 

Ошибка создается командой createNewFile(). Что вызывает эту ошибку?

+0

Вы добавили разрешение на запись в манифест, и существует Каталог документов? – Rahul

+0

Да, у меня есть права на чтение и запись, добавленные в манифест. – David

+0

И существуют ли документы справочника? – Rahul

ответ

0

Проблема была вызвана тем, что приложение не запрашивало разрешения во время выполнения, как предложено greenapps.

0

Сначала создайте каталог документов.

File docDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS); 
    if (!docDir.exists()) { 
     if(docDir.mkdirs()) { 
     File directory = new File(docDir,"test"); 

    } else { 
    // Unable to create document directory. check Run time permissions 
    } 
} 
+0

'Сначала создайте каталог документа. '. Неправильно. Используйте каталог стандартных документов. Вы также забыли посмотреть на возвращаемое значение mkdirs. – greenapps

+0

mkdirs() все еще возвращает false – David

+0

@greenapps Обновлен мой ответ и добавлена ​​проверка для создания каталога – Rahul

0

Вы должны использовать getExternalPublicDirectory(Environment.DIRECTORY_DOCUMENTS) для получения нормального каталога документов.

directory.mkdirs(); 

Не назовите mkdirs вслепую. Но только если каталог не существует. Затем проверьте возвращаемое значение, так как оно может не создать его.

+0

Я немного тестировал это. getExternalPublicDirectory (Environment.DIRECTORY_DOCUMENTS) дает мне доступ к папке «Документы», как вы это предлагали, но когда я пытаюсь использовать ее для создания подкаталога, mkdir все равно возвращает false. Я пробовал как mkdir, так и mkdirs. – David

+0

Какая версия Android используется? Вы запросили разрешение на запись в файле манифеста? Вы добавили код, чтобы попросить пользователя подтвердить эти разрешения во время выполнения для Android 6 и выше? – greenapps

+0

Я создаю такой каталог: Каталог файлов = новый файл (getExternalPublicDirectory (Environment.DIRECTORY_DOCUMENTS), «test»); И directory.mkdir(), и directory.mkdirs() возвращают false. Почему я не могу создать каталог? – David