Android IO 问题:java.io.IOException Operation not permitted

问题描述与处理策略

1、问题描述
复制代码
java.io.IOException: Operation not permitted

java.nio.file.FileSystemException: /storage/emulated/0/test/test.txt: Operation not permitted
  1. java.io.IOException: Operation not permitted:异常为操作不被允许

  2. java.nio.file.FileSystemException: /storage/emulated/0/test/test.txt: Operation not permitted:异常为操作不被允许,并指向了具体的文件 /storage/emulated/0/test/test.txt

2、处理策略
  1. /storage/emulated/0/ 通常是外部存储的根目录,确保应用有权限读写外部存储,即 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 权限,在 AndroidManifest.xml 中声明相关权限
xml 复制代码
<!-- 从外部存储读取 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!-- 向外部存储写入 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 从 Android 6.0(API 级别 23)开始,需要在运行时请求 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 权限,先使用 ContextCompat.checkSelfPermission 方法来检查权限,如果权限未被授予,则使用 ActivityCompat.requestPermissions 方法请求权限

  2. 对于 Android 10(API 级别 29)及更高版本,直接访问外部存储可能受到限制,可以考虑使用 Storage Access Framework(SAF)来让用户选择存储位置

  3. 或者考虑使用内部存储,这样相对更加简单,且不需要声明和请求相关权限

相关推荐
魔道不误砍柴功7 分钟前
Java 2025:解锁未来5大技术趋势,Kotlin融合&AI新篇
java·人工智能·kotlin
奋进的小暄12 分钟前
贪心算法(20)(java)整数替换
开发语言·算法
小可爱的大笨蛋28 分钟前
十倍开发效率 - IDEA 插件之RestfulBox - API
java·ide·intellij-idea
虽千万人 吾往矣36 分钟前
golang context源码
android·开发语言·golang
天堂的恶魔9461 小时前
C++项目 —— 基于多设计模式下的同步&异步日志系统(4)(双缓冲区异步任务处理器(AsyncLooper)设计)
开发语言·c++·设计模式
未来之窗软件服务1 小时前
数字人,磁盘不够No space left on device,修改python 执行环境-云GPU算力—未来之窗超算中心
linux·开发语言·python·数字人
爱的叹息1 小时前
【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
java·开发语言·排序算法
热爱编程的小李1 小时前
智能麻将出牌组件
java
Zhuai-行淮1 小时前
施磊老师基于muduo网络库的集群聊天服务器(二)
开发语言·网络·c++
侧耳倾听1112 小时前
java 设计模式之单例模式
java·单例模式·设计模式