如何将图像复制到SD卡上的现有目录?

2024-03-13

我正在尝试使用以下代码复制图像文件:

InputStream fileInputStream = null;
OutputStream fileOutputStream = null;
String inPath = "/storage/emulated/0/Pictures/MyImage.jpg"; 
String outPath = "/storage/extSdCard/MyFolder/MyImage.jpg";
    try {
    verifyStoragePermissions(this);
    fileInputStream = new FileInputStream(new File(inPath));
    File outputFile = new File(outPath);
        if (!outputFile.exists()) {
            try {
                outPutFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    fileOutputStream = new FileOutputStream(outputFile);

    byte[] buffer = new byte[1024];
    int read;
    while ((read = fileInputStream.read(buffer)) != -1) {
        fileOutputStream.write(buffer, 0, read);
    }
    fileInputStream.close();
    fileInputStream = null;
    fileOutputStream.flush();
    fileOutputStream.close();
    fileOutputStream = null;

    } catch (Exception e) {
    Log.e("tag", e.getMessage());
    }

这是sdk>=23上验证存储权限的方法

// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE
};

/**
 * Checks if the app has permission to write to device storage
 *
 * If the app does not has permission then the user will be prompted to grant permissions
 *
 * @param activity
 */
public static void verifyStoragePermissions(Activity activity) {
    // Check if we have write permission
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permission != PackageManager.PERMISSION_GRANTED) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
        );
    }
}

结果是在到达之前发生的错误buffer line.

Unable to decode stream: java.io.FileNotFoundException: /storage/extSdCard/MyFolder/MyImage.jpg: open failed: ENOENT (No such file or directory)

I have MyFolder在我的设备上的 SD 卡和图库应用程序上,将图像复制到此目录没有任何问题。

注意:权限是在清单(在应用程序标记之前的正确位置)和内部活动(对于 skd >=23)中授予的。

EDITS:

  1. 之前实现过创建文件的建议fileOutputStream(没有帮助)。

  2. 降低了 targetSdkVersion 以克服与权限相关的任何可能的问题,但仍然没有成功。

targetSdkVersion 22

  1. 创造File这样:

    File outFile = new File("/storage/extSdCard", "MyFolder/MyImage.jpg");

    也没有结果。

我正在 android 版本 22 上测试它。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

您需要先创建文件,FileOutputStream如果文件不存在,将抛出该异常文件未找到异常 http://docs.oracle.com/javase/6/docs/api/java/io/FileNotFoundException.html

File outputFile = new File(outPath);
file.createNewFile();
fileOutputStream = new FileOutputStream(outputFile);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将图像复制到SD卡上的现有目录? 的相关文章

随机推荐

  • pandas 中 groupby 中的排名

    我有一个典型的 面板数据 在计量经济学术语中 不是 pandas 面板对象 数据框有一个Date列和一个ID列 以及包含某些值的其他列 对于每个日期 我需要根据 V1 对 ID 进行横断面排名 分为 10 组 十分位数 并创建一个名为的新列
  • Python:定义特定类型对象的列表

    我想继承一个列表来生成myList类 仅接受一种特定类型的对象 例如整数 我相信装饰者可以优雅地做到这一点 使用怎么样arrays http docs python org library array html 该模块定义了一个对象类型 它
  • XLib:获取光标图像

    有没有办法使用 Xlib 检索当前光标位图 我检查过X光标人 http www xfree86 org 4 3 0 Xcursor 3 html但我没有看到任何方法可以做到这一点 使用 GetCursorImage SelectCursor
  • matlab中的支持向量机

    您能否举一个在 matlab 中使用支持向量机 SVM 进行 4 类分类的示例 例如 atribute 1 atribute 2 atribute 3 atribute 4 class 1 2 3 4 0 1 2 3 5 0 0 2 6 4
  • 如何在 Android 中使用文本视图显示颠倒的文本?

    如何在 Android 中使用文本视图显示颠倒的文本 就我而言 我有一个 2 人游戏 他们彼此面对面玩 我想向第二个面向他们的玩家展示测试 这是我在 AaronMs 建议后实施的解决方案 执行重写的类 bab foo UpsideDownT
  • Firebase 服务器时间戳将 iOS 翻倍

    ServerValue timestamp 回报 AnyHashable Any 如何将其转换为Double 这样我就可以创建一个带有时间戳的日期 这并不是 Firebase 时间戳的工作原理 它实际上所做的是将时间戳写入节点 但在写入之后
  • 如何验证 ZF2 中的复选框

    我已经阅读了许多针对 Zend Framework 缺乏默认复选框验证的解决方法 我最近开始使用 ZF2 但文档有点缺乏 有人可以演示如何使用 Zend 表单和验证机制验证复选框以确保其被选中吗 我正在为我的表单使用数组配置 使用 ZF 网
  • 安全组出口规则仅允许 ECR 请求

    当使用 ECR 存储用于 ECS 的容器映像时 EC2 实例 或 Fargate 服务 必须具有允许 通过公共互联网 访问特定于账户的存储库 URI 的安全组 许多组织都有严格的 IP 白名单规则 通常不允许为所有 IP 启用出站端口 44
  • 从命令行在 Hadoop 中检测压缩编解码器

    有没有简单的方法可以找出 Hadoop 中用于压缩文件的编解码器 我是否需要编写 Java 程序 或者将文件添加到 Hive 以便我可以使用describe formatted table 一种方法是在本地下载文件 使用hdfs dfs g
  • 具有接口的枚举类成员无法在内部找到方法

    我遇到了一个奇怪的问题 我不确定这是编译器问题还是我对接口枚举的理解 我正在使用 IntelliJ IDEA 12 构建一个 Android 项目 并且我有一个这样的类 public class ClassWithEnum private
  • Azure 服务总线序列化类型

    随着我们转向面向服务的体系结构 我们已开始研究使用 Windows Azure 服务总线来替代当前的队列 大部分文档都很清楚 但是我很难确定哪种类型的序列化BrokeredMessage当提供主体时使用 例如 假设我实例化了一个Broker
  • React:formik 表单,如何在回调函数内提交后使用状态

    我在用formik插件reactjs我想要useState表单提交后的变量 Both this and setState未定义 我无法实现它 有人可以帮我完成这件事吗 See screenshot below In JavaScript 默
  • android 延迟加载未在手机上显示图像或显示速度很慢

    我正在使用 JSON 来解析在线 xml 文档以及两种延迟图像加载的方法 以下是我的源代码 解释和我的问题 解释 方法一 使用AsyncTask和线imageLoader DisplayImage String jsonImageText
  • 安装chatterBot时出错

    每当我尝试使用命令安装 ChatterBot 时pip install ChatterBot它给出了这个错误 Retrying Retry total 0 connect None read None redirect None after
  • 扩展点或从 Liquid 模板访问 OpenApiDocument

    We have 规范扩展 https github com OAI OpenAPI Specification blob master versions 3 0 2 md specification extensions i e x isP
  • Git 子模块工作流程建议

    所以几天前我开始使用 Git 聚会已经很晚了 别骂 真正开始熟悉基本命令 想法和工作流程 然而 子模块确实让我大吃一惊 我正在尝试贡献代码FuelPHP http fuelphp com s GitHub https github com
  • Symfony2 中数据库测试的实践?如何隔离?

    目前测试与 Symfony2 数据库交互的最佳实践是什么 我有一个简单的 CRUD 设置 我想确保我的测试没问题 现在 我有 4 个测试 每一个测试都确保创建 更新 删除和列出操作正常发生 我的测试用例有两个神奇的方法 construct
  • 错误代码:1093。您无法在 FROM 子句中指定更新的目标表

    假设我有一个产品表 并且只有 2 个字段 id 和购买日期 我想删除 2019 年购买的最后一件产品 我尝试使用以下查询来做到这一点 DELETE FROM products WHERE id SELECT id FROM products
  • 加快 WMA(加权移动平均线)计算速度

    我正在尝试计算 15 天柱的指数移动平均线 但希望查看每个 结束 日 柱的 15 天柱 EMA 的 演变 所以 这意味着我有 15 天的柱线 当每天出现新数据时 我想使用新信息重新计算 EMA 实际上 我有 15 天的柱形图 然后 每天之后
  • 如何将图像复制到SD卡上的现有目录?

    我正在尝试使用以下代码复制图像文件 InputStream fileInputStream null OutputStream fileOutputStream null String inPath storage emulated 0 P