1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Datei Speichern inkl. Ordner erstellen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Ellipse, 11.01.2012.

  1. Ellipse, 11.01.2012 #1
    Ellipse

    Ellipse Threadstarter Junior Mitglied

    Beiträge:
    31
    Erhaltene Danke:
    2
    Registriert seit:
    02.06.2011
    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: 12.01.2012
  2. Tom299, 12.01.2012 #2
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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 :)
     
  3. Ellipse, 12.01.2012 #3
    Ellipse

    Ellipse Threadstarter Junior Mitglied

    Beiträge:
    31
    Erhaltene Danke:
    2
    Registriert seit:
    02.06.2011
    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: 12.01.2012
  4. Tom299, 12.01.2012 #4
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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.
     
  5. Ellipse, 12.01.2012 #5
    Ellipse

    Ellipse Threadstarter Junior Mitglied

    Beiträge:
    31
    Erhaltene Danke:
    2
    Registriert seit:
    02.06.2011
    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: 12.01.2012

Diese Seite empfehlen