Wenn Sie ein erstellen Dateiobjekt, das die Top-Level - Verzeichnis hüllt können Sie es nennen mkdirs () Methode , um alle benötigten Verzeichnisse zu bauen. Etwas wie:
// create a File object for the parent directory
File wallpaperDirectory = new File("/sdcard/Wallpaper/");
// have the object build the directory structure, if needed.
wallpaperDirectory.mkdirs();
// create a File object for the output file
File outputFile = new File(wallpaperDirectory, filename);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = new FileOutputStream(outputFile);
Hinweis: Es ist möglicherweise ratsam, Environment.getExternalStorageDirectory () zu verwenden. zum Abrufen des Verzeichnisses "SD-Karte" zu verwenden, da sich dies ändern kann, wenn ein Telefon mit einer anderen Karte als einer SD-Karte (z. B. integriertem Flash) verwendet wird iPhone). In jedem Fall sollten Sie bedenken, dass Sie überprüfen müssen, ob es tatsächlich vorhanden ist, da die SD-Karte möglicherweise entfernt wird.
UPDATE: Seit API Level 4 (1.6) müssen Sie auch die Berechtigung anfordern. So etwas (im Manifest) sollte funktionieren:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Hatte das gleiche Problem und möchte nur hinzufügen, dass AndroidManifest.xml auch diese Berechtigung benötigt:
quelle
Folgendes funktioniert bei mir.
in Ihrem Manifest und dem Code unten
quelle
Eigentlich habe ich einen Teil von @fiXedd asnwer verwendet und es hat bei mir funktioniert:
Stellen Sie sicher, dass Sie mkdirs () und nicht mkdir () verwenden, um den vollständigen Pfad zu erstellen
quelle
File.mkdirs()
. Er zeigte dann ein Beispiel für die Verwendung.Mit API 8 und höher hat sich der Speicherort der SD-Karte geändert. Die Antwort von @ fiXedd ist gut, aber für sichereren Code sollten Sie
Environment.getExternalStorageState()
überprüfen, ob die Medien verfügbar sind. Dann können Sie verwendengetExternalFilesDir()
Sie zu dem gewünschten Verzeichnis navigieren (vorausgesetzt, Sie verwenden API 8 oder höher).Weitere Informationen finden Sie in der SDK-Dokumentation .
quelle
Stellen Sie sicher, dass externer Speicher vorhanden ist: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
quelle
Vergessen Sie nicht sicherzustellen, dass Ihre Datei- / Ordnernamen keine Sonderzeichen enthalten. Ist mir mit ":" passiert, als ich Ordnernamen mit Variablen festgelegt habe
Nicht erlaubte Zeichen in Datei- / Ordnernamen
In einem solchen Fall kann dieser Code hilfreich sein.
Der folgende Code entfernt alle ":" und ersetzt sie durch "-"
quelle
Ich hatte das gleiche Problem. In Android gibt es zwei Arten von Berechtigungen:
Hier ist die Strategie, um gefährliche Berechtigungen in Android 6.0 zu erhalten
onRequestPermissionsResult
Hier ist mein Fall: Ich muss in einen externen Speicher schreiben.
Zuerst überprüfe ich, ob ich die Erlaubnis habe:
Überprüfen Sie dann die Zustimmung des Benutzers:
quelle
Ich hatte das gleiche Problem, konnte kein Verzeichnis auf dem Galaxy S erstellen, konnte es jedoch erfolgreich auf Nexus und Samsung Droid erstellen. Wie ich es behoben habe, war durch Hinzufügen der folgenden Codezeile:
quelle
Dadurch wird ein Ordner mit dem Namen dor auf Ihrer SD-Karte erstellt. dann, um die Datei für eg- filename.json abzurufen, die manuell in den Ordner dor eingefügt wird . Mögen:
<Verwendungsberechtigung android: name = "android.permission.WRITE_EXTERNAL_STORAGE" />
und vergessen Sie nicht, Code im Manifest hinzuzufügen
quelle
quelle
Vervollständige gerade den Beitrag des Vijay ...
Manifest
Funktion
Verwendung
Sie könnten nach Fehlern suchen
quelle
quelle
Sie können / sdcard / anstelle von Environment.getExternalStorageDirectory () verwenden.
quelle
quelle