如何将图像存储在应用程序特定文件夹中?在 Android 11. 帮助存储图像

时间:2021-07-30 05:54:16

标签: java android android-studio

这是我在应用程序特定目录中创建文件夹的方式的代码。

  private File createDirectory(String dirName) {
    File file = new File(getApplicationContext().getExternalFilesDir(dirName) + "/" + dirName);
    if (!file.exists()) {
        file.mkdir();
    }
    return file;
}

3 个答案:

答案 0 :(得分:0)

您的方法返回 File,这是一个目录。现在你必须创建新的图像文件对象

File dir = createDirectory("imagesDirectory");
File file = new File(dir.getAbsolutePath(), "imageName.jpg");
FileOutputStream outStream = new FileOutputStream(file);

现在您必须将您的 Bitmap 压缩为 JPG(如上面设置的名称)并提供此流

Bitmap pictureBitmap = ...; // your image
pictureBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream); 

不要忘记关闭流

outStream.flush();
outStream.close();

如果你想要无损格式,你可以使用 PNG (Bitmap.CompressFormat.PNG),不要忘记相应地命名你的文件扩展名

答案 1 :(得分:0)

您只能写入您的 app-specific 文件

File dir_ = new File(context.getFilesDir(), "YOUR_DIR");
dir_.mkdirs();

答案 2 :(得分:0)

您可以使用函数“getExternalFilesDir”并更改括号中的值。这里我放了“Environment.DIRECTORY8DCIM”,但还有其他的(你可以在android开发者网站上查看)。

我举个例子:

private fun getOutputMediaFile(): File? {


        val mediaStorageDir = getExternalFilesDir(Environment.DIRECTORY_DCIM).let {
                File(it, "[name_folder]").apply { mkdirs() } }

        Log.v(TAG, "storage: $mediaStorageDir") ///storage/emulated/0/Android/data/[name_of_your_program]/files/DCIM/[name_folder]

        if (!mediaStorageDir?.exists()!!){
            if (!mediaStorageDir.mkdirs()) {
                Log.v(TAG, "Failed to create directory")
                return null
            }
        }
}

希望对你有用:)