如何将位图图像保存到 android 中的我的图库文件夹中?

how to Save bitmap image into my gallery folder in android?

这是我保存图像的代码。我也提到了我想保存图像的文件夹名称,因此它会在画廊中,但它不起作用我的图像被保存在默认 "Pictures" 文件夹中。当我调试时,它显示

java.io.FileNotFoundException: /storage/emulated/0/MyFolderName/aaa-13:15:44/1-4-2016.jpg: 打开失败: ENOENT (没有那个文件或目录)

异常。它在执行第一行 try 块后立即进入 catch 文件夹。

求助,我错过了什么????

提前谢谢你...

    public void saveImage(Bitmap bitmap){
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/MyFolderName"); //my folder name where I want to save.
    String receiverN = receiverName.getText().toString();

    myDir.mkdirs();
    Calendar c = Calendar.getInstance();
    String month, day, year, hour, minute, second;
    month = ""+ (c.get(Calendar.MONTH)+1);
    day = "" + c.get(Calendar.DAY_OF_MONTH);
    year = "" + c.get(Calendar.YEAR);
    hour = ""+c.get(Calendar.HOUR_OF_DAY);
    minute = "" + c.get(Calendar.MINUTE);
    int seconds = c.get(Calendar.SECOND);
    if (seconds<10) second = "0"+ seconds;
    else second = ""+seconds;

    String fname = receiverN + "-" + hour + ":" + minute + ":" + second + "/"  + month + "-" + day + "-" + year +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ()) file.delete ();
    try {
        FileOutputStream out = new FileOutputStream(file); //from here it goes to catch block
        bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();
        String[] paths = {file.toString()};
        String[] mimeTypes = {"/image/jpeg"};
        MediaScannerConnection.scanFile(this, paths, mimeTypes, null);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

一些尝试。

使用 File.separator 作为你的 / 角色。

不要将外部存储目录转换为字符串,而是在 File 构造函数中使用它。

File myDir = new File( Environment.getExternalStorageDirectory(),File.separator+"MyFolderName");

您的实际文件名中有一个 /。我会使用类似以下内容删除该字符以及可能导致文件名出现问题的任何其他字符。

public static String encodeString(String string) {

        if (string != null) {
            string = string.replace("/","-");
            string = string.replace(" ","_");
            string = string.replace(":", "-");
            string = string.replace("&", "-");
        }
        return string;
    }