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. 或者考虑使用内部存储,这样相对更加简单,且不需要声明和请求相关权限

相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里2 天前
java中的继承和多态的区别
java
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕2 天前
JSONObject与JSONArray封装数据格式区别
java·json
千里马学框架2 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台2 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖2 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
AFinalStone2 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
此时不提桶,更待何时2 天前
01-06-A-JVM排查实战详解
java·jvm