2012-09-24 7 views
5

Ich versuche, eine Bitmap in das Verzeichnis Bilder zu speichern. Hier sind der Codegibt es einen Unterschied zwischen/mnt/SD-Karte und/SD-Karte?

  File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 

      File file = new File(path, "test1.PNG"); 
      try { 
        path.mkdirs(); 
        OutputStream out = new FileOutputStream(file); 
        mBitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
        out.flush(); 
        out.close(); 

      } catch (Exception e) { 
        e.printStackTrace(); 
        Log.w("ExternalStorage", "Error writing " + file, e); 
      } 

Aber die Hinrichtung bekam bei OutputStream out = new FileOutputStream(file); stecken ich verwenden, um den Debugger und der vollständige Pfad zurückgibt mnt/sdcard/Pictures/test1.PNG, ist mnt/ die Täter, warum ich nicht in der Vergangenheit OutputStream out = new FileOutputStream(file); bekommen? Weil ich nur sdcard/ in meinem Dateiverzeichnis sehen kann.

danke!

+0

Was ist der Wert von 'Pfad' .. ?? –

+1

Was ist der Fehler? – njzk2

Antwort

1

Sie können die SD-Karte Verzeichnis erhalten und Zugriff auf die Nutzung dieser Environment.getExternalStorageDirectory() als mnt/sdcard oder sdcard/its ein geräteabhängigen Verzeichnis, dass, wie OS war Zugang und die Nutzung externen Verzeichnis keine Notwendigkeit Um sich für verschiedene Geräte und andere Verzeichnisse zu sorgen, wurde mit dieser Methode zurückgekehrt. in androidmanifest.xml Datei als Benutzerberechtigung

WRITE_EXTERNAL_STORAGE 
+1

Vielen Dank für Ihre Antwort, schätzen Sie die Zeit. anscheinend, damit es funktioniert, muss man die Erlaubnis für WRITE_EXTERNAL_STORAGE setzen, ich übersah diesen Teil und folglich die FileNotFoundException, selbst nachdem mkdir() angerufen wurde. – user1694345

0

Verwendung wie diese

String filePath = "/sdcard/yourfile.txt"; 

FileOutputStream os = null; 
os = new FileOutputStream(filePath); 
os.write(write it to file); 
os.close(); 
3

/sdcard ist ein Softlink zu /mnt/sdcard ... und /sdcard gelesen wird nur in Dateisystem

EDIT

Für externe Speicher Erlaubnis benötigen den Zugriff auf und definieren also besser verwenden /mnt/sdcard/ ..