„java.io.FileNotFoundException (Keine solche Datei oder kein solches Verzeichnis)“
Posted: 17 Jan 2025, 05:08
Ich habe eine Klasse in meinem Projekt, um ein Bild hochzuladen und in meiner Datenbank zu speichern und es bei Erfolg lokal zu speichern. Das funktioniert und ich kann das Bild in einem benutzerdefinierten Ordner speichern, den ich auf meinem Android-Telefon erstellt habe.
In einer anderen Klasse versuche ich jedoch, ein Bild herunterzuladen Ich habe das Bild in Textform codiert und mit der oben verwendeten Methode lokal gespeichert, aber es funktioniert nicht mehr. Anscheinend kann ich den Ordner nicht erstellen.
Ich verstehe nicht, wie es in meiner anderen Klasse funktioniert hat und nicht in dieser
Ich habe versucht, meine Manifestdatei zu überprüfen und festzustellen, ob ich die erforderlichen Berechtigungen eingefügt habe und ob sie sich an den richtigen Stellen befinden
[BEARBEITEN] Ok, ich habe versucht, das Leerzeichen in meinem Dateipfad zu entfernen, um zu überprüfen, ob das Leerzeichen wirklich das Problem verursacht hat, aber es hat immer noch nicht funktioniert
Wie kommt es außerdem, dass es in meiner anderen Klasse mit dem Leerzeichen funktioniert und in dieser nicht? 
patient_id und result_date sind nur Zeichenfolgen. encoded_image ist ein Lontext
Ich muss in der Lage sein, den codierten Text, den ich heruntergeladen habe, in eine Bitmap umzuwandeln und ihn im benutzerdefinierten Ordner „TB System“ zu speichern, den ich voraussichtlich in DCIM finde . Ein weiterer Ordner sollte in TB System erstellt werden (d. h. pat1, pat2, pat3, ...) und die Bilder werden darin gespeichert.
In einer anderen Klasse versuche ich jedoch, ein Bild herunterzuladen Ich habe das Bild in Textform codiert und mit der oben verwendeten Methode lokal gespeichert, aber es funktioniert nicht mehr. Anscheinend kann ich den Ordner nicht erstellen.
Ich verstehe nicht, wie es in meiner anderen Klasse funktioniert hat und nicht in dieser
Ich habe versucht, meine Manifestdatei zu überprüfen und festzustellen, ob ich die erforderlichen Berechtigungen eingefügt habe und ob sie sich an den richtigen Stellen befinden
Code: Select all
...
Code: Select all
File folder = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM) + File.separator + "TBSystem" + File.separator + patient_id + File.separator + "lab_result_" + sqlDateToString(result_date) + ".jpg");

Code: Select all
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)
Ich muss in der Lage sein, den codierten Text, den ich heruntergeladen habe, in eine Bitmap umzuwandeln und ihn im benutzerdefinierten Ordner „TB System“ zu speichern, den ich voraussichtlich in DCIM finde . Ein weiterer Ordner sollte in TB System erstellt werden (d. h. pat1, pat2, pat3, ...) und die Bilder werden darin gespeichert.