1. ホーム
  2. android

[解決済み] エラー:オープンに失敗しました。ENOENT (そのようなファイルまたはディレクトリがありません)

2022-02-16 11:21:42

質問内容

カメラで撮った写真を保存するためのファイルを作ろうとしたら、ファイルを作れないことが判明しました。 しかし、本当にミスを見つけることができません。見ていただいて、何かアドバイスをいただけないでしょうか?

    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;
        }

そして、パーミッションを追加しました。

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

このメソッドはいつもこのような間違いをします。

オープンに失敗しました。ENOENT (そのようなファイルまたはディレクトリがありません)

解決方法は?

Pictures ディレクトリがまだ存在しない可能性があります。存在することを保証するものではありません。

のAPIドキュメントでは getExternalStoragePublicDirectory() を使用し、ディレクトリが存在することを確認するコードです。 mkdirs :

File path = Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");

try {
    // Make sure the Pictures directory exists.
    path.mkdirs(); 

を追加するだけでよいかもしれません。 path.mkdirs() を既存のコードに追加してから createTempFile .