首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将图片保存到android的外部存储库中

如何将图片保存到android的外部存储库中
EN

Stack Overflow用户
提问于 2012-10-19 11:39:55
回答 5查看 24.4K关注 0票数 7

我正在尝试将一个图像文件写入到指定目录下的公有图库文件夹中,但我一直收到一个错误,提示我无法打开该文件,因为它是一个目录。

到目前为止,我所掌握的内容如下

代码语言:javascript
运行
复制
//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);

其中,目录是应用程序名称。因此,应用程序保存的所有照片都将放入该文件夹/目录中,但我一直收到错误消息

代码语言:javascript
运行
复制
/storage/sdcard0/Pictures/appname/testing.png: open failed: EISDIR (Is a directory)

即使我不尝试将它放在一个目录中,并将变量path转换为一个文件,例如

代码语言:javascript
运行
复制
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

我不明白这个错误,但是照片仍然没有出现在图库中。

*回答问题是,当我最初运行这段代码时,它创建了一个名为testing.png的目录,因为我在目录中创建文件之前创建目录失败。因此,解决方案是首先创建目录,然后使用单独的文件写入该目录,如下所示

代码语言:javascript
运行
复制
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);

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

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12967046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档