我正在尝试将图像文件写入特定目录下的public gallery文件夹中,但是我不断收到错误消息,因为它是目录,所以无法打开该文件。

到目前为止,我有以下内容

//set the file path
    String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + directory;

    File outputFile = new File(path,"testing.png");


    outputFile.mkdirs();

    FileOutputStream out = new FileOutputStream(outputFile);
    bmp.compress(Bitmap.CompressFormat.PNG, 100, out);

目录是应用程序名称。因此,应用程序保存的所有照片都将进入该文件夹/目录,但我不断收到错误消息
/storage/sdcard0/Pictures/appname/testing.png: open failed: EISDIR (Is a directory)

即使我不尝试将其放在目录中并将变量路径转换为File
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

我没有收到错误,但是照片仍未显示在图库中。

***回答
问题是,当我最初运行此代码时,它创建了一个名为testing.png的目录,因为在创建目录中的文件之前,我无法创建目录。因此,解决方案是先创建目录,然后使用一个单独的文件将其写入,如下所示
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + File.separator + directory;

//directory is a static string variable defined in the class

            //make a file with the directory
    File outputDir = new File(path);

            //create dir if not there
    if (!outputDir.exists()) {
         outputDir.mkdir();

    }

            //make another file with the full path AND the image this time, resized is a static string
    File outputFile = new File(path+File.separator+resized);

    FileOutputStream out = new FileOutputStream(outputFile);
    bmp.compress(Bitmap.CompressFormat.PNG, 100, out);

请注意,如果您犯了我开始时遇到的相同错误,则可能需要进入存储并手动删除目录

最佳答案

您正在尝试写入目录而不是文件。
尝试这个

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + directory;
File outputDir= new File(path);
outputDir.mkdirs();
File newFile = new File(path + File.separator + "test.png");
FileOutputStream out = new FileOutputStream(newFile);
bmp.compress(Bitmap.CompressFormat.PNG, 100, out);

关于android - 如何在Android的外部存储库中保存图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12967046/

10-12 02:42