Datei Speichern inkl. Ordner erstellen

E

Ellipse

Neues Mitglied
4
Hei, ich versuche eine Bilddatei auf meiner SDCard zu speichern.

Folgender Code sollte das für mich erledigen, dabei soll, falls die Datei bereits vorhanden ist, nichts passieren. Ist die Datei noch nicht vorhanden, so sollen alle Ordner die dazu benötigt werden angelegt werden, zudem soll dann die Datei gespeichert werden.

Code:

Code:
private static final String EXTERNAL_STORAGE = Environment.getExternalStorageDirectory().toString();

public boolean writeBitmapOnSDC(String filePath, Bitmap data)
    {

        File bitmapFile = new File(EXTERNAL_STORAGE + filePath);
        File parentFile = new File(bitMapFile.getParent());

        try
        {
            if (!bitmapFile.exists())
            {
                parentFile.mkdirs();
                bitmapFile.createNewFile();

                FileOutputStream fos = new FileOutputStream(bitmapFile);
                data.compress(CompressFormat.PNG, 100, fos);
                fos.flush();
                fos.close();
            }
            return true;

        } 
        catch (Exception e) 
        {
            return false;
        }
    }
Das Merkwürdige an der Sache ist, beim Debuggen des Programms springt der Marker erst auf "return true" und danach auf "return false" im Catch Block.

Außerdem wird die Datei manchmal angelegt, manchmal nicht.

Ich hoffe ihr könnt mir helfen,
Vielen Dank
 
Zuletzt bearbeitet:
Den Effekt beim Debuggen hatte ich auch schon öfter, daß Eclipse in beide Zweige springt. Scheint aber nur ein "Anzeigefehler" zu sein, wenn du System.outs reinmachst wirst du sehen, daß nur ein Zweig tatsächlich aufgerufen wird. Zumindest wars so bei mir :)
 
Erstmal Danke für die Antwort.
Das ist halbwegs richtig, ich habe testweise mal ein paar Log.d(...); benutzt um mir den Inhalt der Exception anzeigen zu lassen. Die ist jedenfalls immer leer, bzw. die Zeilen werden übersprungen.

Nur drück ich dann nochmals auf Step Over, lande ich auch in der aufrufenden Methoden im "False Zweig", sprich diese "Anzeigefehler" setzt sich mehr oder weniger druch.

Komische Sache, gefällt mir garnicht.

Evtl. gibts noch andere Ideen, würde mich auch freuen, könnte einer von euch den Code bei sich mal ausprobieren.

lG
 
Zuletzt bearbeitet:
Kleiner Tip: Du benutzt bitmapFile und bitMapFile, was natürlich 2 unterschiedliche Objekte / Instanzen sind. Aufgrund der Ähnlichkeit der Namen kann das aber sehr verwirren und zu Fehlern führen. Ich würde das erst mal ändern.
 
Hab ich nur beim kopieren abgeändert, hatte den Namen wohl übersehen, keine Angst, daran liegt es nicht.

Edit://

Hab jetzt rausgefunden, das ich mich wohl beim Auswerten des Rückgabetyps in der aufrufenden Methode vertan habe, es wird trotz dieses Anzeigefehlers nur "true" zurückgegeben, wie es Tom299 erwähnt hatte.

Damit ist das erstmal erledigt,

Vielen Dank.
 
Zuletzt bearbeitet:

Ähnliche Themen

5
Antworten
0
Aufrufe
1.146
586920
5
A
Antworten
10
Aufrufe
1.920
swa00
swa00
R
Antworten
6
Aufrufe
1.011
swa00
swa00
Zurück
Oben Unten