即使设置了权限且外部存储处于 MEDIA_MOUNTED 状态,也无法写入 SD 卡

2023-11-27

在尝试将文件写入 SD 卡时,我得到java.io.FileNotFoundException: /filename (Read-only file system)例外。遗憾的是,这里发布的许多解决方案都没有帮助我。我已设置权限,外部存储处于 MEDIA_MOUNTED 状态。 这是有问题的代码:

Log.i("STORAGE", Environment.getExternalStorageState());
OutputStream fos = new FileOutputStream(Helpers.StripExtension(filePath) + ".blk");
fos.write(digest.getBytes());
fos.close();    

filePath来自文件代码。我想做的是从选定的文件中读取,然后保存另一个具有相同名称、不同扩展名和其中一些内容的文件。

显现:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackagename"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="15" />

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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:theme="@android:style/Theme.Black" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Logcat:

 10-25 18:24:34.330: I/FILEPATH(1989): /mnt/sdcard/Untitled.txt
 10-25 18:24:34.360: I/STORAGE(1989): mounted
 10-25 18:24:34.360: W/System.err(1989): java.io.FileNotFoundException: /mnt/sdcard/Untitled.blk (Read-only file system)
 10-25 18:24:34.360: W/System.err(1989):    at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
 10-25 18:24:34.360: W/System.err(1989):    at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
 10-25 18:24:34.360: W/System.err(1989):    at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
 10-25 18:24:34.360: W/System.err(1989):    at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
 10-25 18:24:34.360: W/System.err(1989):    at java.io.FileOutputStream.<init>(FileOutputStream.java:144)

我在真实设备上运行它,而不是 avd。我尝试过重新启动我的设备并重建项目。 OfficeSuite 等应用程序可以毫无问题地写入此位置。

设备:配备 Android 2.3.7 (CyanogenMod 7) 的 ZTE Blade


尝试这个:

File file = new File(Helpers.StripExtension(filePath) + ".blk");
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
fos.write(digest.getBytes());
fos.close();

如果这不起作用,我认为您在读取原始文件时可能会遇到问题(digest.getBytes())。在此发布更多代码,我们可以从那里开始

Edit:

如果它不允许您写入所选目录,请尝试使用如下路径进行测试:

File file = new File(Environment.getExternalStorageDirectory() + "test_file.blk");

它应该可以正常工作,并且您可能只是没有对您正在使用的目录的写入权限。

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

即使设置了权限且外部存储处于 MEDIA_MOUNTED 状态,也无法写入 SD 卡 的相关文章

随机推荐

  • HttpClient 不返回 Content-Type

    我正在发送请求HttpClient 服务器返回两个我想返回给客户端的标头 我这样运行 using var client new HttpClient var response await client GetAsync DownloadUr
  • .NET Core 3.1 ChangePasswordAsync 内部异常“无法更新身份列”

    我正在将 NET Core Web API 从 2 2 升级到 3 1 当测试时ChangePasswordAsync函数时 我收到以下错误消息 无法更新身份列 UserId 我运行了 SQL 配置文件 可以看到 Identity 列未包含
  • Django:“项目”与“应用程序”

    我有一个相当复杂的 产品 我正准备使用 Django 构建 我将避免在这种情况下使用术语 项目 和 应用程序 因为我不清楚它们在 Django 中的具体含义 项目可以有许多应用程序 应用程序可以在许多项目之间共享 美好的 我没有重新发明博客
  • 如何从nodejs aws s3 getObject回调数据中检索元数据?

    我正在尝试使用 AWS 节点 SDK 将音频块文件上传到 S3 或从 S3 下载音频块文件 我尝试过base64方法 效果很好 但我无法取回我作为上传参数的一部分捆绑的元数据 下面是上传的代码片段以及元信息 var myMetaInfo A
  • kubeadm:主节点从未准备好

    我正在跟进一篇博文使用 kubeadm 设置 kubernetes 集群 因此 我使用桥接网络创建了一个 Virtualbox 然后只需按照说明进行操作即可 我最初只是做了kubeadm init它不起作用 master NotReady
  • Python/Tkinter:动态扩展字体大小以填充框架

    我知道您可以通过以下命令让框架小部件扩展并填充其容器中可用的所有区域 frameName pack fill both expand True 对于文本的字体大小有何作用 目前我的文本是标签小部件的属性 标签小部件的父级是frameName
  • 为什么 GCC 允许在 C++ 中使用 round(),即使带有 ansi 和 pedantic 标志?

    即使使用 ansi and pedantic flags include
  • 未设置设计密钥

    我正在开发一个 Rails 4 应用程序 使用 Active Admin gem 作为管理后端 Active Admin 反过来使用 Devise 进行用户身份验证 现在 当我尝试使用部署应用程序时capistrano在 VPS 服务器上
  • Yii 将过滤器添加到 CGridView 中的虚拟属性并使其可排序

    我有以下型号 User包含列 id user name password user type Admin包含列 id user id full name etc Editor包含 id user id full name etc 列 关系是
  • 浮动 div 而不定义 height 属性

    它看起来很简单 也许是 只是被卡住了 gt 只是为了好玩 现在没有实际需要 我懂了 div class master div class left p LEFT p div div class right p Lorem ipsum dol
  • 将列表转换为字典[重复]

    这个问题在这里已经有答案了 l a b c d e 我想将此列表转换为字典 例如 d a b c d e 所以基本上 偶数将是键 而赔率将是值 我知道我可以用 非Pythonic 的方式来做到这一点 例如带有if语句的for循环 但我相信应
  • IExtensionConfigProvider 未初始化或与 Microsoft.Azure.WebJobs v3 绑定

    我们通过与 IExtensionConfigProvider 的参数绑定在 Azure 函数 netstandard20 上的 v2 中使用依赖项注入 将 Microsoft NET Sdk Functions 从 1 0 13 升级到 1
  • tkinter:键盘中断需要一段时间

    在 Linux 上使用 Tkinter 和 Python 我试图通过使用KeyboardInterrupt例外 但是当我按下它时 有一段时间没有任何反应 最终它 接受 并退出 示例程序 import sys from Tkinter imp
  • R中的负下标错误

    我有以下代码片段 if k lt 100 k gt 0 j k seq 50 150 lt F else j k seq 100 100 lt F 并出现以下错误 j k seq 50 150 即使我已经设置了条件 如果下标可能 为什么我会
  • Cakephp Sqlserver 编码

    这让我难住了 我正在尝试为我的 Sqlserver 连接设置编码 但我尝试的所有操作都失败了 我只得到 错误 使用 Sqlserver 的数据库连接丢失或无法连接 连接 数据库服务器返回此错误 SQLSTATE IMSSP 指定的编码无效
  • 使用 PHP 操作 MySQL 中的 utf8mb4 数据

    这大概是一件很简单的事情 我发誓我一直在网上寻找答案 但还没有找到 由于我的具体情况有点不典型 我最终决定在这里提问 我在 MySQL 中有一些表用于中文程序 它需要能够支持所有可能的汉字 包括没有很好字体支持的罕见汉字 表中的示例单元格可
  • 原始 C++ 指针是第一类对象吗?

    根据维基百科 当一个对象满足以下条件时 它就是一流的 可以存储在变量和数据结构中 可以作为参数传递给子例程 可以作为子例程的结果返回 可以在运行时构造 具有内在身份 独立于任何给定名称 有人曾经告诉我 原始指针不是第一类对象 而像 std
  • 如何在 C# 中获取运行 Windows 8 的计算机的唯一标识符?

    我正在开发一个用 C 编写的 Metro 应用程序 需要一种唯一标识设备的方法 我在文档中找到了 ASHWID 它看起来很棒 建议的代码如下 HardwareToken token HardwareIdentification GetPac
  • 将 @font-face 与 ABCPDF 一起使用?或者有其他方法将字体转换为 PDF 吗?

    我们有一个大型应用程序成功使用 ABCPDF NET 和 HTML 样式文本 我们习惯于使用 Windows 中未安装但存储在文件系统其他位置的文件中的字体添加文本 我们这样做是为了每个用户都可以上传自己的字体并将其与输出一起使用 我们使用
  • 即使设置了权限且外部存储处于 MEDIA_MOUNTED 状态,也无法写入 SD 卡

    在尝试将文件写入 SD 卡时 我得到java io FileNotFoundException filename Read only file system 例外 遗憾的是 这里发布的许多解决方案都没有帮助我 我已设置权限 外部存储处于 M