47 votes

Créer un répertoire dans Android

J'essaie de créer un répertoire appelé "images" sur la carte SD sous Android. Voici mon code mais il ne fonctionne pas. Quelqu'un peut-il me donner des conseils ?

File picDirectory = new File("mnt/sdcard/images");
picDirectory.mkdirs();

84voto

William Tate Points 16777

Mise à jour : Depuis les mises à jour de stockage d'Android 10,11 Google a limité l'accès au stockage par des opérations de fichier en langage de programmation standard.

Pour les applications ciblant uniquement Android 10 (API 29) et plus, vous devez déclarer "requestLegacyExternalStorage="true"" dans votre fichier manifeste Android pour utiliser les opérations de fichiers basées sur le langage de programmation.

<application android:requestLegacyExternalStorage="true" ....>

\==========

Vous voulez être sûr que vous trouvez correctement l'adresse de votre carte SDCard, vous ne pouvez pas être sûr qu'elle soit toujours à une adresse particulière. Vous voudrez faire ce qui suit !

File directory = new File(Environment.getExternalStorageDirectory()+File.separator+"images");
directory.mkdirs();

Faites-moi savoir si cela fonctionne pour vous !

Vous aurez également besoin de la ligne suivante dans votre AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

11voto

vasc0x Points 81

Je l'utilise pour connaître le résultat :

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

    if(!yourAppDir.exists() && !yourAppDir.isDirectory()) 
    {
        // create empty directory
        if (yourAppDir.mkdirs())
        {
            Log.i("CreateDir","App dir created");
        }
        else
        {
            Log.w("CreateDir","Unable to create app dir!");
        }
    }
    else
    {
        Log.i("CreateDir","App dir already exists");
    }

4voto

Mohsen Bahman Points 1082

Vous pouvez utiliser ce :

File directory = new File(Environment.getExternalStorageDirectory() + "/images");
directory.mkdirs();

3voto

Environment.getExternalStorageDirectory() est déprécié. Vous devriez donc utiliser ceci :

File directory = new File(this.getExternalFilesDir(null).getAbsolutePath() + "/YourDirectoryName");
directory.mkdirs();

0 votes

Il crée un dossier dans le dossier <nom-de-paquet>/files/. Il ne sera pas visible dans l'explorateur. Je pense qu'il sera interne à l'application ?

0 votes

@MindRoasterMir oui, il l'est.

0 votes

Comment créer un dossier dans l'espace externe (là où se trouvent les téléchargements, etc.) dans les API 29 et 30, merci.

2voto

ZijunLost Points 101

Une chose qui vaut la peine d'être notée est que si vous obtenez toujours false de la mkdirs(), essayez de débrancher votre appareil du PC, et voyez s'il peut créer des dossiers. Au moins j'ai essayé, ça a marché pour moi, actuellement je cherche des moyens de résoudre ce problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X