Android 将文件保存到外部存储

2023-12-01

我在 Android 应用程序上创建目录并将文件保存到其中时遇到了一些问题。我正在使用这段代码来执行此操作:

String filename = "MyApp/MediaTag/MediaTag-"+objectId+".png";
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream fos;

fos = new FileOutputStream(file);
fos.write(mediaTagBuffer);
fos.flush();
fos.close();

但它抛出了一个异常:

java.io.FileNotFoundException:/mnt/sdcard/MyApp/MediaCard/MediaCard-0.png(没有这样的文件或目录)

在那条线上:fos = new FileOutputStream(file);

如果我将文件名设置为:"MyApp/MediaTag-"+objectId+"它正在工作,但是如果我尝试创建文件并将其保存到另一个目录,则会抛出异常。那么你知道我做错了什么吗?

另一个问题:有什么方法可以使我的文件在外部存储中保密,这样用户就无法在图库中看到它们,只有当他将设备连接为Disk Drive?


使用此功能将位图保存在 SD 卡中

private void SaveImage(Bitmap finalBitmap) {

    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/saved_images");    
     if (!myDir.exists()) {
                    myDir.mkdirs();
                }
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    String fname = "Image-"+ n +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ())
      file.delete (); 
    try {
        FileOutputStream out = new FileOutputStream(file);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();

    } catch (Exception e) {
         e.printStackTrace();
    }
}

并将其添加到清单中

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

EDIT:通过使用这条线,您将能够在图库视图中看到保存的图像。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                         Uri.parse("file://" + Environment.getExternalStorageDirectory())));

也看看这个链接

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

Android 将文件保存到外部存储 的相关文章

  • 设置自定义属性android的值

    我有一个自定义属性 如下所示
  • 无法理解如何使用 Android AWS SDK

    我正在构建一个将使用 Amazon 的 SimpleDB 服务的应用程序 它使用亚马逊的AWS 安卓 SDK http aws amazon com sdkforandroid 据我了解 不建议我将 Amazon 凭证 访问 ID 和密钥
  • 以编程方式切换片段

    我有一个带有两个片段的寻呼机 每个片段都有自己的 xml 我的问题是是否可以以编程方式从一个片段切换到另一个片段并触发任何侦听器 此致 我假设你的意思是浏览器 http developer android com reference and
  • 如何取消/取消订阅协程 Flow

    当我尝试提前取消流程时 我注意到一个奇怪的行为 看一下下面的例子 这是一个发出整数值的简单流程 private fun createFlow flow repeat 10000 emit it 然后我打电话给createFlow使用此代码的
  • android中如何释放内存避免内存泄漏

    While going through the android developer site i found this 它说为了避免内存泄漏 我们应该在 onStop 中释放资源 但如何做到这一点 基本上 任何被正确清空的对象都被视为已释放
  • setRotation(90) 以肖像模式拍照不适用于三星设备

    根据文档 设置旋转 90 http developer android com reference android hardware Camera Parameters html setRotation 28int 29应旋转捕获的 JPE
  • LoaderManager 不接受“这个”

    好吧 我投降 我想不明白 我正在学习 Udacity 的 Android 基础知识课程 需要了解如何使用加载器加载数据 但是 当我使用以下行时 this 以红色突出显示并显示以下错误 Wrong 3rd argument type Foun
  • 如何获取拍摄照片的uri?

    我想实现什么目标 我想获取捕获图像的 URI 并将其保存在 Firebase 上 我尝试了什么 首先我需要打开相机 下面我是如何做到的 Intent cameraIntent new Intent android provider Medi
  • 隐藏加载失败的图片

    我有一个 Android 应用程序 它生成一些在本地 Webkit 视图中呈现的 HTML HTML 生成的细节实际上并不那么重要 除了 大部分来自一个地方 我无法改变它 HTML 周围的模板 包括页眉 页脚 HEAD 等 CSS 和 Ja
  • 如何更改选项卡之间的 FloatingActionButton?

    我正在尝试实施浮动操作按钮 from 谷歌设计支持库进入三个选项卡中的两个 并根据材质设计指南 FloatingActionButton https www google com design spec components buttons
  • 谷歌地图返回空指针异常

    当我尝试在片段上显示地图时 它返回空指针异常 我已将所有内容添加到清单中的每个权限中 我正在附加片段文件 XML 文件和日志目录 Chatffragment java public class ChatFragment extends Fr
  • 注册到 gcm 时获取空设备 ID

    GCMRegistrar checkDevice this GCMRegistrar unregister this GCMRegistrar checkManifest this if GCMRegistrar isRegistered
  • 如何在 Windows 中压缩 apk 文件

    我已经签署并打包了 Xamarin 应用程序因此使用 Visual Studio 创建了 apk 文件 如何在 Windows 中压缩对齐此文件 确保您拥有Android SDK 构建工具安装然后检查你的SDK安装在哪里我的安装在哪里C P
  • 如何使用适用于 Android 的 google 驱动器 api 的 url 从 google 驱动器下载文本文件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已将文本文件上传到我的谷歌云端硬盘帐户 并且该文件是公开的 我通过共享链接获得了该文件的链接 我想要做的是使用我获得的链接使用驱动器
  • 如何处理错误消息“FontFamily bestFont == NULL,因此返回空的 FakedFont”

    我从另一个程序员那里接手了一个项目 我注意到每次加载一些 UI 片段 列表视图重新加载等 时 日志都会充斥着数十个 D Minikin FontFamily bestFont NULL so return vacant FakedFont
  • 当搜索栏改变大小时,Android v2 版 Google 地图上的圆圈会闪烁

    我正在按照此方法实现一种在 Android 中的 Google 地图 v2 上显示搜索半径的方法 Method for drawing a circle around the user private void drawMapSearchR
  • 当我从片段调用它时,我的接口类不起作用

    我正在尝试在我的项目中实现此代码 但不起作用RecyclerView 如何捕获ImageView上的onClick https stackoverflow com questions 33264042 recyclerview how to
  • 在 SQLite 中加密数据

    如何加密我的数据 就我研究的解决方案而言 有两种方法 使用android提供的算法加密数据 我使用android提供的 Cipher 来加密我的数据 但我在检索大量记录的数据时遇到问题 导致应用程序的性能显着降低 我对整个数据库进行了编码
  • Android 折叠工具栏在折叠时没有隐藏其他元素

    我在 Android 上有一个布局 支持设计折叠工具栏 其中包含 TextView 但是当我折叠工具栏时 一些带有工具栏标题的 TextView 我想隐藏所有其他内容 而不是工具栏和标题 这是我的布局
  • 如何将 pdf 文档显示到 Webview 中?

    我想在 webview 上显示 pdf 内容 这是我的代码 WebView webview new WebView this setContentView webview webview getSettings setJavaScriptE

随机推荐

  • 参考变量

    在某些文本中 我们不能将常量值分配给引用变量 当我执行这样的程序时 我可以做到 有什么条件我们不能将常量值赋给引用变量吗 您可以将常量引用初始化为常量值 const int i 12 如果引用不是 const 则会出现编译器错误 int i
  • Powershell Active Directory 帐户属性变量

    抱歉新手问题 我正在使用 Powershell 3 获取所有用户帐户的列表 我正在尝试为帐户生成 已启用 或 已禁用 的输出 我可以使用以下命令从活动目录获取帐户状态代码 rc Rech PropertiesToLoad Add userA
  • 如何让 angular2 [innerHtml] 工作 [重复]

    这个问题在这里已经有答案了 我不知道做错了什么 因为没有报告错误 我有一个组件类 import Component OnInit ViewContainerRef from angular core Component selector a
  • AsyncTask - 扩展和 doInBackground 需要哪些参数?

    这段使用 AsyncTask 的代码有什么问题 尤其 我需要在 fetchSchools 中放入哪些参数 我需要在 doInBackground 中放入哪些参数 我发现了很多 有用 的示例 但它们都在这些参数中使用伪代码 并且没有解释我实际
  • 通过深度 HashMap 递归迭代

    我有一个类似于以下内容的 JSON 字符串 foo bar id 1 children some string id 2 children some string id 2 children 我对该字符串进行 JSON 解析 将所有对象转换
  • 循环更新 mayavi 绘图

    我想做的是循环更新 mayavi 图 我希望绘图的更新在我指定的时间完成 与动画装饰器不同 因此 我想要运行的一段示例代码是 import time import numpy as np from mayavi import mlab V
  • 当函数没有被前向声明时,GCC 在编译器阶段不会抛出错误

    Ok 我的目录中有 3 个文件 main c include
  • 如何使用 sklearn.datasets.load_files 加载数据百分比

    我正在加载 8000 张图像sklearn datasets load files并通过 resnet 从keras以获得瓶颈特征 然而这个任务在 GPU 上需要花费几个小时 所以我想知道是否有办法告诉load files加载一定百分比的数
  • Jersey:在不使用 web.xml 文件的情况下禁用 OPTIONS 请求的自动 Wadl 生成?

    我想完成与这个问题相同的事情 禁用 OPTIONS 请求的自动 Wadl 生成 但我们没有web xml文件 我们还利用ResourceConfig 其中getProperties方法是最终的 所以我不能按照中的建议覆盖它其他问题 我试过打
  • 为什么将 D3 源复制到 Angular 服务中?

    我尝试将 d3 使用到一个有角度的项目中 如主要示例之一中提到的NG通讯 其中展示了如何在 Angular 中设置 D3 服务 我想知道将 D3 作为 Angular 服务如何与 Angular yeoman 和 Bower 配合良好 还是
  • 水文年时间序列

    目前我正在研究河流流量数据分析 我有从1935年至今的每日出院记录 我想提取每个水文年的年度最大流量 从 01 11 开始到明年 31 10 然而 我发现HydroTSM包只能处理自然年 我尝试使用 zoo 包 但我发现它很难计算 因为每年
  • XSD 用于带有 HREFLANG 的站点地图

    我们正在推出一个支持 20 种语言和大量区域内容 即针对特定国家或一组国家的内容 的主要网站 因此 我们有一个在站点地图中使用 xhtml link 和 rel hreflang 的教科书用例 我们通常更喜欢从 XSD 生成类 以便我们可以
  • 生成两个具有相同maven项目的jar

    我想在执行 mvn clean install 时从同一个 Maven 项目生成两个 jar 两个罐子之间的唯一区别是内容META INF folder 目前 我已经我的应用程序 jar 我现在想要my jar xxx jar and 我的
  • 如何对主键重新排序?

    我有一个包含 5700 条记录的表 主键是一个整数 现在我注意到缺少一些值 像这样 100 data 101 data 102 data 104 data 103不见了 我如何更新所有行以使顺序正确 104变成103在我的示例中 在一个 S
  • 无法加载文件或程序集“AjaxControlToolkit”或其依赖项之一。该系统找不到指定的文件

    我已经使用我的 Visual Studio 安装了 AJAXcontrolsToolkit 并将 Combobox Ajaxcontrol 控件放置在我的网页中 当我编译代码时出现以下错误 无法加载文件或程序集 AjaxControlToo
  • 如何将云存储上的文件中的 json 导入到 Bigquery

    我正在尝试通过 api 将文件 json txt 从云存储导入到 Bigquery 但抛出错误 当通过网络用户界面完成此操作时 它可以正常工作并且没有错误 我什至设置了 maxBadRecords 0 有人可以告诉我我在这里做错了什么吗 代
  • 预加载的声音被卸载?

    所以 我有以下测试代码
  • 在 JavaScript 中使用“<”和“>”运算符比较两个字符串

    比较运算符如 gt and lt return Boolean当它们的输入作为两个字符串值给出时的值 我尝试了几个例子 String vs String console log firstName lt lastname true cons
  • PHP 中的 DOM:解码实体并设置 nodeValue

    我想使用 PHP 对 XML 文档执行某些操作DOM其标准库的一部分 正如其他人已经发现 然后就必须处理解码的实体 为了说明困扰我的问题 我举一个简单的例子 假设我们有以下代码 doc new DOMDocument doc gt load
  • Android 将文件保存到外部存储

    我在 Android 应用程序上创建目录并将文件保存到其中时遇到了一些问题 我正在使用这段代码来执行此操作 String filename MyApp MediaTag MediaTag objectId png File file new