FileNotFoundException: создает дочернюю папку вместо файла - PullRequest
0 голосов
/ 20 мая 2018

Я только начал работать с файлами сегодня на Android и целый день выдергивал свои волосы.Это вызывает исключение FileNotFoundException:

public void writeConfig(){
            try {
                File file = new File(Environment.getExternalStorageDirectory() + "/" + "AppName", "TimetableConfiguration");
                if (!file.mkdirs()) {
                    P.rint("Couldn't create directory");
                }
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            fileOutputStream.write(getActivity().getSharedPreferences("periods", MODE_PRIVATE).getString("periods", null).getBytes());
            fileOutputStream.close();
            } catch (FileNotFoundException e) {
                P.rint("Didn't find file");
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

Есть идеи?Я заметил, что вместо создания файла создается дочерняя папка.Почему он это делает?Спасибо за любую помощь:)

1 Ответ

0 голосов
/ 20 мая 2018

FileNotFoundException: создает дочернюю папку вместо файла

Да.Это то, что вы делаете.

Сначала вы создаете с помощью mkdirs () каталог с определенным именем.

После этого вы пытаетесь создать файл с тем же именем, которое невозможно, так как не можетбыть двумя файлами или каталогами с одним и тем же именем.

Так что посмотрите, и вы найдете этот каталог.

Ну, вы уже почти все сами вывели.Теперь попытайтесь понять ваш код.

if (! File.mkdirs ()) {P.rint ("Не удалось создать каталог");

Вы будетевидеть, что напечатано каждый раз, когда вы повторяете код.Вы бы тоже это видели.И сказали нам.

Вы должны вызывать mkdirs, только если каталог еще не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...