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

如何将位图图像保存到android中的my gallery文件夹中?,android,android-intent,android-activity,bitmapimage,android-bitmap,Android,Android Intent,Android Activity,Bitmapimage,Android Bitmap,这是我保存图像的代码。我也提到了文件夹名称,我想在其中保存图像,以便它将在画廊,但它不工作,我的图像被保存在默认的“图片”文件夹。当我调试时,它显示 java.io.FileNotFoundException:/storage/emulated/0/MyFolderName/aaa-13:15:44/1-4-2016.jpg:open failed:enoint(没有这样的文件或目录) 例外。它在执行try块的第一行之后进入catch文件夹 请帮帮我,我错过了什么 提前谢谢你 publi

这是我保存图像的代码。我也提到了文件夹名称,我想在其中保存图像,以便它将在画廊,但它不工作,我的图像被保存在默认的“图片”文件夹。当我调试时,它显示

java.io.FileNotFoundException:/storage/emulated/0/MyFolderName/aaa-13:15:44/1-4-2016.jpg:open failed:enoint(没有这样的文件或目录)

例外。它在执行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();
    }
}
public void saveImage(位图){
String root=Environment.getExternalStorageDirectory().toString();
File myDir=new File(root+“/MyFolderName”);//我要保存的文件夹名。
字符串receiverN=receiverName.getText().toString();
myDir.mkdirs();
Calendar c=Calendar.getInstance();
字符串月、日、年、时、分、秒;
月份=”+(c.get(日历月份)+1);
day=“”+c.get(日历,每月的第天);
年份=”“+c.get(日历年);
hour=”“+c.get(日历中的小时);
分钟=”+c.get(日历分钟);
int seconds=c.get(日历秒);
如果(秒有几件事要尝试

/
字符使用
File.separator

不要将外部存储目录转换为字符串,而是在
文件中使用它

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

非常感谢…文件名中的“/”。我用“-”替换了它,它起了作用。但是,根据您的列表,我有“:”在我的文件名中…到目前为止没有出现任何问题,但是“/”已创建问题。有任何建议…?
可能没有创建问题。我想这取决于您对文件名结构等的偏好。如果它没有导致问题,那么可能可以使用它