Android, wie man Environment.getExternalStorageDirectory() verwendet

Lesezeit: 3 Minuten

Android wie man EnvironmentgetExternalStorageDirectory verwendet
Moe

Wie kann ich verwenden Environment.getExternalStorageDirectory() ein gespeichertes Image von der SD-Karte lesen oder gibt es eine bessere Möglichkeit?

1647260590 349 Android wie man EnvironmentgetExternalStorageDirectory verwendet
Debracey

Environment.getExternalStorageDirectory().getAbsolutePath()

Gibt Ihnen den vollständigen Pfad der SDCard. Sie können dann normale Datei-I/O-Operationen mit Standard-Java durchführen.

Hier ist ein einfaches Beispiel zum Schreiben einer Datei:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

// Not sure if the / is on the path or not
File f = new File(baseDir + File.separator + fileName);
f.write(...);
f.flush();
f.close();

Bearbeiten:

Hoppla – Sie wollten ein Beispiel zum Lesen …

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

// Not sure if the / is on the path or not
File f = new File(baseDir + File.Separator + fileName);
FileInputStream fiStream = new FileInputStream(f);

byte[] bytes;

// You might not get the whole file, lookup File I/O examples for Java
fiStream.read(bytes); 
fiStream.close();

  • Vergessen Sie nicht zu prüfen, ob der externe Speicher gemountet ist: Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

    – Whlk

    11. Oktober 2011 um 8:19 Uhr

  • Guter Kommentar, Mannaz! Übrigens, welche Bibliothek müssen Sie einschließen, um diese Aufrufe zu verwenden? Ist es zufällig Android.os.Environment?

    – Gonzohirne

    14. Februar 2012 um 0:10 Uhr


  • @Mannaz und wie geht es weiter, wenn der Speicher nicht gemountet ist? Was muss ich tun? Welches Verzeichnis muss ich verwenden, um Dateien zu speichern?

    – Androidevil

    5. Mai 2016 um 23:15 Uhr

  • @andridevil: Das gibt es eine Anleitung in der Android-Entwicklerdokumentation in der Verwendung von Speicher. Wahrscheinlich könnten Sie dem Benutzer dann entweder eine Nachricht anzeigen und ihn auffordern, seinen externen Speicher zu mounten, oder stattdessen den internen Speicher verwenden.

    – Whlk

    10. Mai 2016 um 15:00 Uhr

  • baseDir gibt mir ständig /storage/emulated/0, das nicht auf der SD-Karte ist. Warum mache ich?

    – Hochverehrter Herr

    13. Juli 2018 um 18:48 Uhr

Bedenke das aber getExternalStorageDirectory() wird auf einigen Telefonen nicht richtig funktionieren, zB auf meinem Motorola Razr Maxx, da es 2 Karten /mnt/sdcard und /mnt/sdcard-ext hat – respektvoll für interne und externe SD-Karten. Sie erhalten jedes Mal nur die Antwort /mnt/sdcard. Google muss eine Möglichkeit bieten, mit einer solchen Situation umzugehen. Da viele SD-Karten-fähige Apps (z. B. Kartensicherung) auf diesen Telefonen kläglich versagen.

  • Dasselbe gilt für das Galaxy Tab 2 GT-P3110 … Ich habe mich gefragt, warum meine Datenbank nicht auf die SD-Karte kopiert wurde, und ich habe gerade festgestellt, dass es 2 Karten gibt, wie Sie sagten … wie man Stunden mit Debugging umsonst verschwendet!

    – Mirko

    7. Oktober 2012 um 0:11 Uhr

  • Es ist möglich, dass ein Gerät, das eine Partition des internen Speichers für den externen Speicher verwendet, auch einen SD-Kartensteckplatz bietet. In diesem Fall ist die SD-Karte nicht Teil des externen Speichers und Ihre App kann nicht darauf zugreifen (der zusätzliche Speicher ist nur für vom Benutzer bereitgestellte Medien vorgesehen, die das System scannt).

    – Timucin

    27. Januar 2013 um 12:11 Uhr

  • @Tim Hier stehe ich vor einem solchen Problem. In Nexus 5 hat nur eingebauter Speicher und Micromax a114 Canvas 2.2 hat erweiterbaren Speicher. Mein Problem ist, dass beim Versuch, einige Dateien von meiner App herunterzuladen, kein Download erfolgt. Und die Umwelt.MEDIA_MOUNTED was bedeutet das?

    – Karthikeyan Ve

    2. Juli 2014 um 9:40 Uhr

  • Dies ist gelöst android-external-storage-create-new-directory

    – ELITE

    13. September 2016 um 5:39 Uhr

  • Meine Bilder werden auf dem internen Speicher gespeichert, den ich verwende Environment.getExternalStorageDirectory().getAbsolutePath();

    – Moeez

    31. Januar 2017 um 13:20 Uhr

Wie in Dokumentation beschrieben Environment.getExternalStorageDirectory() :

Environment.getExternalStorageDirectory() Gibt das primäre freigegebene/externe Speicherverzeichnis zurück.

Dies ist ein Beispiel für die Verwendung beim Lesen eines Bildes:

String fileName = "stored_image.jpg";
 String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
 String pathDir = baseDir + "/Android/data/com.mypackage.myapplication/";

 File f = new File(pathDir + File.separator + fileName);

        if(f.exists()){
          Log.d("Application", "The file " + file.getName() + " exists!";
         }else{
          Log.d("Application", "The file no longer exists!";
         }

  • Wie gesagt, mit getExternalStorageDirectory() Wir können ein neues Verzeichnis im vom Benutzer bevorzugten Speicher erstellen (was im Allgemeinen der interne Speicher ist). Was passiert also, wenn der Standardspeicher auf eingestellt wurde? External memory und es ist nicht lesbar/beschreibbar? Löst dies eine Ausnahme aus? oder es wird automatisch erstellt Internal storage?

    – SR

    16. Juli 2017 um 18:38 Uhr


Android wie man EnvironmentgetExternalStorageDirectory verwendet
Mohit Rana

Um das Verzeichnis zu erhalten, können Sie den folgenden Code verwenden:

File cacheDir = new File(Environment.getExternalStorageDirectory() + File.separator + "");

1001520cookie-checkAndroid, wie man Environment.getExternalStorageDirectory() verwendet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy