4

これが私の最初の質問です。疑問点を探ってきました。同様の質問を見つけましたが、正確な答えが得られませんでした。だから私が何か間違ったことをしたなら、私を許してください。アプリの ImageView から SD カードのフォルダーに画像を保存しようとしています。コードは次のとおりです:-

public void save(View view) {
    myImage.setDrawingCacheEnabled(true);
    Bitmap imgV = myImage.getDrawingCache();
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/AVP_saved");
    String fname="Image.png";
    File file = new File(myDir, fname);
        try {
               FileOutputStream out = new FileOutputStream(file);
               imgV.compress(Bitmap.CompressFormat.PNG, 90, out);
               out.flush();
               out.close();
               Toast.makeText(this, "Image Downloaded", 7000).show();

        } catch (Exception e) {
               e.printStackTrace();
               Toast.makeText(this, e.getMessage(), 8000).show();
        }
    }

「保存」メソッドは、ボタンに割り当てられたメソッドです。「myImage」は、その ID で見つかった ImageView です。マニフェストで既にアクセス許可を設定しています。問題は、画像が保存されず、パスが存在しないということです。私自身が「AVP_saved」フォルダを作成すると、画像が保存されます。ボタンをクリックしたときにアプリがフォルダーを自動的に作成するように、このコードで何を編集する必要がありますか?

御時間ありがとうございます!

4

1 に答える 1

1

このコードを後に追加しますFile myDir = new File(root + "/AVP_saved");

if(!myDir.exists()) {
  mydir.mkdir(); //you can else call mkdirs() if you have to create a complete directory hierarchy
}

Java では、ファイルを作成するだけでディレクトリ階層を作成することはできないようです。これにより、ディレクトリが存在しない場合にのみディレクトリを作成します (ディレクトリが存在してもファイルである場合、例外が発生する可能性があるため、myDir.isDirectory() も検索できることに注意してください)。

于 2012-11-13T13:07:08.490 に答える