1. Ellipse, 11.01.2012 #1
    Ellipse

    Ellipse Threadstarter Junior Mitglied

    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

    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

    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

    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

    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

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. java android und com ordner

    ,
  2. android programmierung app ordner

    ,
  3. android ordner erstellen datein speichern