«java.io.FileNotFoundException (нет такого файла или каталога)»Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 «java.io.FileNotFoundException (нет такого файла или каталога)»

Сообщение Anonymous »

В моем проекте есть класс, позволяющий загрузить изображение и сохранить его в базе данных, а в случае успеха — сохранить его локально. Это работает, и я могу сохранить изображение в пользовательской папке, которую я создал на своем телефоне Android.

Однако в другом классе я пытаюсь загрузить закодированное изображение в текстовой форме и сохранить его локально, используя метод, который я использовал выше, но он больше не работает. Кажется, я не могу создать папку.

Я не понимаю, как это сработало в другом моем классе, а не в этом.

Я попробовал проверить файл манифеста и посмотреть, включил ли я необходимые разрешения и находятся ли они в нужных местах
[EDIT] Хорошо, я попробовал удалить пробелы в моем пути к файлу, чтобы проверить, действительно ли пробелы были причиной проблемы, но это все равно не сработало

Код: Выделить всё

File folder = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM) + File.separator + "TBSystem" + File.separator + patient_id + File.separator + "lab_result_" + sqlDateToString(result_date) + ".jpg");
Кроме того, почему это работает с другим моим классом с пробелами, а не с этим? :(

Код: Выделить всё

File folder = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM) + File.separator + "TB System" + File.separator + patient_id);

if (!folder.exists()) {
folder.mkdirs();
}

folder = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM) + File.separator + "TB System" + File.separator + patient_id + File.separator + "lab_result_" + result_date + ".jpg");

byte[] decodedBytes = Base64.decode(encoded_image, 0);
Bitmap imageBitmap = BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);

try (
FileOutputStream out = new FileOutputStream(folder)) {
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
} catch (IOException e) {
e.printStackTrace();
}

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/DCIM/TB System/pat1/lab_result_2019-04-06.jpg (No such file or directory)
W/System.err:     at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:308)
at java.io.FileOutputStream.(FileOutputStream.java:238)
at java.io.FileOutputStream.(FileOutputStream.java:180)
at buenaventura.dorothy.tbmgmtapp.db_volley.VolleyDownloadRequest$1.onResponse(VolleyDownloadRequest.java:569)
at buenaventura.dorothy.tbmgmtapp.db_volley.VolleyDownloadRequest$1.onResponse(VolleyDownloadRequest.java:103)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6981)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)

Patient_id и result_date — это просто строки. encoded_image — это lontext

Мне нужно иметь возможность конвертировать загруженный закодированный текст в растровое изображение и сохранять его в пользовательской папке «TB System», которую я ожидаю найти внутри DCIM. Внутри системы TB должна быть создана другая папка (т. е. pat1, pat2, pat3,...), и изображения будут сохраняться внутри нее.

Подробнее здесь: https://stackoverflow.com/questions/555 ... -directory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»