Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用MediaStore.Images.media存储图像以保存在特定文件夹中_Java_Android_Mediastore - Fatal编程技术网

Java 使用MediaStore.Images.media存储图像以保存在特定文件夹中

Java 使用MediaStore.Images.media存储图像以保存在特定文件夹中,java,android,mediastore,Java,Android,Mediastore,我必须在特定文件夹中保存位图。如果没有创建文件夹,我想创建它 我知道你可以保存这样的图像: MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, bitmap + ".jpg Card Image", bitmap + ".jpg Card Image"); 但如何将其保存在特定位置,如“MediaStore/folder”(实

我必须在特定文件夹中保存位图。如果没有创建文件夹,我想创建它

我知道你可以保存这样的图像:

 MediaStore.Images.Media.insertImage(getContentResolver(), bitmap,       
                 bitmap + ".jpg Card Image", bitmap + ".jpg Card Image");
但如何将其保存在特定位置,如“MediaStore/folder”(实际上不知道路径应该如何),其中folder是我要创建的文件夹(如果未创建)


我尝试了很多事情,但都没有成功,所以如果有人能帮助我,我会非常感激的

如果您不想使用MediaStore,可以像这样使用内部存储

void saveBitmap(Bitmap bitmap) {
    File dir = getFilesDir(); // or getCacheDir()
    if (!new File(dir + "/folderName").isDirectory()) {
        if (new File(dir + "/folderName").mkdir()) { // directory made successfully
            dir = new File(dir + "/folderName/" + "fileName.ext");
        } else { // error making the directory
            return;
        }
    } else {
        dir = new File(dir + "/folderName/" + "fileName.ext");
    }

    try {
        FileOutputStream fileOutputStream = new FileOutputStream(dir);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
        fileOutputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
检索位图的步骤

Bitmap loadBitmap(File dir) {
    Bitmap bitmap = null;
    try {
        FileInputStream fileInputStream = new FileInputStream(dir);
        bitmap = BitmapFactory.decodeStream(fileInputStream);
        fileInputStream.close();
    } catch(Exception e) {
        e.printStackTrace();
    }

    return bitmap;
}

该文件夹存储在哪里?在应用程序的数据目录中。这意味着卸载应用程序时文件夹将被删除。我可以将数据放在用户可以访问它的位置吗?如果卸载应用程序,文件夹不会被删除吗?不使用此方法,则不会。卸载应用程序时,数据将被擦除,作为GetFileDir()和getCacheDir()返回的目录特定于该应用程序。