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)
Ах, извините, я неправильно понял это как "отключено". Вы проверили, существует ли файл и является - файл? Удостоверились ли вы, что ваше приложение имеет права на запись для каталога и файла?
@Thomas, если я запустил этот код mydir.mkdirs (); Значит ли это, что я должен видеть созданную папку? потому что я не вижу этого в своих файлах. Однако mydir.mkdirs (); возвращает истину
Хм, вы уверены, что if (!mydir.mkdirs())
вернет истину? Вы вызываете mydir.mkdirs();
прямо перед этим, и если этот вызов завершится неудачно, следующее должно также потерпеть неудачу, в то время как, если первый будет успешным, второй все равно должен вернуть false, потому что все уже должно существовать.
@ Томас не уверен, что произошло, но добавил проверку, существует ли файл, он прошел. Папка была найдена во внутреннем хранилище вместо моей sd-карты
@ Томас, могу я узнать, что ты имеешь в виду? Я включил разрешение приложения через настройки> разрешения приложения. Я хочу знать, почему мой файл был обнаружен как каталог