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 回答