Java.io.FileNotFoundException: (Это каталог)

if (ContextCompat.checkSelfPermission(MainActivity.getAppContext(),
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(MainActivity.getAppContext(), "permission denied, please enable it", Toast.LENGTH_SHORT).show();
        } else{
            Toast.makeText(MainActivity.getAppContext(), "permission granted", Toast.LENGTH_SHORT).show();
        }


        if (!mydir.exists()) {
            mydir.mkdirs();
            if (!mydir.mkdirs()) {
                Toast.makeText(MainActivity.getAppContext(), "dir not made", Toast.LENGTH_SHORT).show();
            }
        }

        File file = new File(mydir, fname);
        String s = file.getPath().toString();
        Toast.makeText(MainActivity.getAppContext(), s, Toast.LENGTH_SHORT).show();

        FileOutputStream fos = new FileOutputStream(file); //error appears here
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(this);
        oos.close();
        fos.close();

Я получаю следующую ошибку, я вручную включил разрешение для приложения:

java.io.FileNotFoundException: /storage/emulated/0/iCHMF/elasticDefault.dat (это каталог)

fname - это файл, который я хочу вывести "/elasticDefault.dat" проблемная строка кода здесь.

FileOutputStream fos = new FileOutputStream(file)

@ Томас, могу я узнать, что ты имеешь в виду? Я включил разрешение приложения через настройки> разрешения приложения. Я хочу знать, почему мой файл был обнаружен как каталог

Travis Tay Kang Xun 02.10.2018 09:06

Ах, извините, я неправильно понял это как "отключено". Вы проверили, существует ли файл и является - файл? Удостоверились ли вы, что ваше приложение имеет права на запись для каталога и файла?

Thomas 02.10.2018 09:10

@Thomas, если я запустил этот код mydir.mkdirs (); Значит ли это, что я должен видеть созданную папку? потому что я не вижу этого в своих файлах. Однако mydir.mkdirs (); возвращает истину

Travis Tay Kang Xun 02.10.2018 09:24

Хм, вы уверены, что if (!mydir.mkdirs()) вернет истину? Вы вызываете mydir.mkdirs(); прямо перед этим, и если этот вызов завершится неудачно, следующее должно также потерпеть неудачу, в то время как, если первый будет успешным, второй все равно должен вернуть false, потому что все уже должно существовать.

Thomas 02.10.2018 09:36

@ Томас не уверен, что произошло, но добавил проверку, существует ли файл, он прошел. Папка была найдена во внутреннем хранилище вместо моей sd-карты

Travis Tay Kang Xun 02.10.2018 09:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
1 113
0

Другие вопросы по теме