Comment puis-je enregistrer une image dans le stockage externe de la galerie android

Je suis en train d'écrire un fichier d'image dans la galerie du public un dossier dans un répertoire spécifique, mais je reçois un message d'erreur que je ne peux pas ouvrir le fichier parce que son répertoire.

Ce que j'ai jusqu'à présent est la suivante

//set the file path
    String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + directory;

    File outputFile = new File(path,"testing.png");


    outputFile.mkdirs();

    FileOutputStream out = new FileOutputStream(outputFile);
    bmp.compress(Bitmap.CompressFormat.PNG, 100, out);

Où répertoire est le nom de l'application. Toutes les photos enregistrées par l'application va aller dans ce répertoire, mais je reçois l'erreur

/storage/sdcard0/Pictures/appname/testing.png: open failed: EISDIR (Is a directory)

Même si je n'ai pas essayer de le mettre dans un répertoire et de lancer le chemin de la variable dans un Fichier comme

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

Je n'ai pas l'erreur cependant, la photo n'apparaît pas dans la galerie.

***Répondre
Le problème est que quand j'ai couru ce code a l'origine, il créé un RÉPERTOIRE nommé test.png parce que je n'ai pas réussi à créer le répertoire avant de créer le fichier DANS le répertoire. Donc la solution est de rendre le répertoire d'abord, puis les écrire dans un fichier séparé comme

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + File.separator + directory;

//directory is a static string variable defined in the class

            //make a file with the directory
    File outputDir = new File(path);

            //create dir if not there
    if (!outputDir.exists()) {
         outputDir.mkdir();

    }

            //make another file with the full path AND the image this time, resized is a static string
    File outputFile = new File(path+File.separator+resized);

    FileOutputStream out = new FileOutputStream(outputFile);
    bmp.compress(Bitmap.CompressFormat.PNG, 100, out);

Veuillez noter que vous devez aller dans votre espace de stockage et de supprimer manuellement le répertoire si vous faites la même erreur que j'ai fait pour commencer

parfois galerie besoin d'être rafraîchi. Accédez à votre chemin d'accès au dossier par ddms et vérifier si un nouveau fichier est créé ou non.
Ouais je l'ai fait plusieurs fois withno chance
Pour la numérisation de votre nouveau fichier de le voir [post][1] [1]: stackoverflow.com/questions/4646913/...
voir ce stackoverflow.com/questions/7887078/...

OriginalL'auteur Brian | 2012-10-19