Si vous créez un objet File qui encapsule le répertoire de niveau supérieur, vous pouvez appeler sa méthode mkdirs () pour créer tous les répertoires nécessaires. Quelque chose comme:
// 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);
Remarque: il peut être judicieux d'utiliser Environment.getExternalStorageDirectory () pour obtenir le répertoire "SD Card" car cela peut changer si un téléphone arrive avec autre chose qu'une carte SD (comme le flash intégré, a'la le iPhone). Dans tous les cas, vous devez garder à l'esprit que vous devez vous assurer qu'il est bien là car la carte SD peut être retirée.
MISE À JOUR: Depuis le niveau d'API 4 (1.6), vous devrez également demander l'autorisation. Quelque chose comme ça (dans le manifeste) devrait fonctionner:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
J'ai eu le même problème et je veux simplement ajouter qu'AndroidManifest.xml a également besoin de cette autorisation:
la source
Voici ce qui fonctionne pour moi.
dans votre manifeste et le code ci-dessous
la source
En fait, j'ai utilisé une partie de @fiXedd asnwer et cela a fonctionné pour moi:
Assurez-vous que vous utilisez mkdirs () et non mkdir () pour créer le chemin complet
la source
File.mkdirs()
. Il a ensuite montré un exemple d'utilisation.Avec l'API 8 et les versions ultérieures, l'emplacement de la carte SD a changé. La réponse de @ fiXedd est bonne, mais pour un code plus sûr, vous devriez utiliser
Environment.getExternalStorageState()
pour vérifier si le média est disponible. Ensuite, vous pouvez utilisergetExternalFilesDir()
pour accéder au répertoire souhaité (en supposant que vous utilisez l'API 8 ou une version supérieure).Vous pouvez en savoir plus dans la documentation du SDK .
la source
Assurez-vous que le stockage externe est présent: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
la source
N'oubliez pas de vous assurer qu'il n'y a pas de caractères spéciaux dans les noms de vos fichiers / dossiers. M'est arrivé avec ":" lorsque je définissais les noms de dossier à l'aide de variables
caractères non autorisés dans les noms de fichiers / dossiers
U peut trouver ce code utile dans un tel cas.
Le code ci-dessous supprime tous les ":" et les remplace par "-"
la source
J'ai fait face au même problème. Il existe deux types d'autorisations dans Android:
Voici la stratégie pour obtenir des autorisations dangereuses dans Android 6.0
onRequestPermissionsResult
Voici mon cas: j'ai besoin d'écrire sur un stockage externe.
Tout d'abord, je vérifie si j'ai l'autorisation:
Vérifiez ensuite l'approbation de l'utilisateur:
la source
J'étais confronté au même problème, incapable de créer un répertoire sur Galaxy S, mais j'ai pu le créer avec succès sur Nexus et Samsung Droid. Comment j'ai résolu le problème en ajoutant la ligne de code suivante:
la source
cela créera un dossier nommé dor dans votre sdcard. puis pour récupérer le fichier par exemple: nomfichier.json qui est inséré manuellement dans le dossier dor . Comme:
<uses-permission android: name = "android.permission.WRITE_EXTERNAL_STORAGE" />
et n'oubliez pas d'ajouter du code dans le manifeste
la source
la source
Je viens de terminer le post de Vijay ...
Manifeste
Fonction
Usage
Vous pourriez vérifier les erreurs
la source
la source
Vous pouvez utiliser / sdcard / au lieu de Environment.getExternalStorageDirectory ()
la source
la source