Erreur: échec de l'ouverture: ENOENT (Aucun fichier ou répertoire)
J'ai essayé de créer un fichier pour enregistrer les images de la caméra, il s'avère que je ne peux pas créer le fichier.
Mais je ne peux vraiment pas trouver l'erreur. Pouvez-vous y jeter un oeil et me donner quelques conseils?
private File createImageFile(){
File imageFile=null;
String stamp=new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File dir= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String imageFileName="JPEG_"+stamp+"_";
try {
imageFile=File.createTempFile(imageFileName,".jpg",dir);
} catch (IOException e) {
Log.d("YJW",e.getMessage());
}
return imageFile;
}
Et j'ai ajouter l'autorisation.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
La méthode de toujours donner de telles erreurs:
open a échoué: ENOENT (Aucun fichier ou répertoire)
La exemple donné dans la référence de l'API a cette ligne:
Essayez ce lien: android toile à l'exception java.io.IOException: open failed: ENOENT
Merci! Dans la formation, il n'y a pas un tel soupçon. Je devrais avoir cherché les références de l'API. Merci!
C'était ma suggestion qui a travaillé? Si oui, je vais l'ajouter comme une réponse.
// Make sure the Pictures directory exists. path.mkdirs();
. Êtes-vous sûr que le répertoire existe déjà?Essayez ce lien: android toile à l'exception java.io.IOException: open failed: ENOENT
Merci! Dans la formation, il n'y a pas un tel soupçon. Je devrais avoir cherché les références de l'API. Merci!
C'était ma suggestion qui a travaillé? Si oui, je vais l'ajouter comme une réponse.
OriginalL'auteur Jiawei Yang | 2016-03-18
Vous devez vous connecter pour publier un commentaire.
Le répertoire Images peut ne pas exister encore. Il n'est pas garanti d'être là.
Dans la documentation de l'API pour
getExternalStoragePublicDirectory()
, le code garantit le répertoire existe, à l'aide demkdirs
:...de sorte qu'il peut être aussi simple que d'ajouter que
path.mkdirs()
votre code avant de vouscreateTempFile
.OriginalL'auteur Matt Gibson
Remplacer:
Avec:
assurez-vous que vous appelez:
Voici le code qui devrait fonctionner pour vous:
J'ai eu une mauvaise expérience en suivant l'exemple donné dans Android Studio Documentation et j'ai trouvé qu'il y en a beaucoup d'autres qui connaissent les mêmes sur ce sujet ici dans stackoverflow, c'est parce que même si nous avons mis
le problème persiste dans certains appareils.
Mon expérience a été que l'exemple a travaillé quand je l'ai essayé en mode debug, après que plus de 3 tests, il se trouve que ma SD soudain a été endommagé, mais je ne pense pas que cela ait à voir avec leur exemple (drôle). J'ai acheté une nouvelle carte SD et il a essayé de nouveau, seulement pour réaliser que toujours à la fois la release et debug mode n'a le même journal d'erreur: le répertoire n'existe pas ENOENT. Enfin, j'ai dû créer les répertoires moi-même auquel contiendra les images capturées à partir de mon téléphone appareil photo. Et j'avais raison, il fonctionne tout simplement parfait.
J'espère que cela vous aide, vous et les autres à la recherche de réponses.
OriginalL'auteur OBL
J'ai utilisé le contentResolver avec l'URI et il a travaillé pour moi. Vu dans un autre post DONC que je ne peux pas trouver.
espère que cela aide....
OriginalL'auteur peresisUser
Essayez ceci:
OriginalL'auteur Govinda Paliwal
J'ai résolu comme ceci:
OriginalL'auteur lucasddaniel