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 分钟前
【数据结构】_栈的结构与实现
开发语言·数据结构·c++
萧月霖15 分钟前
Simula语言的物联网
开发语言·后端·golang
慕璃嫣17 分钟前
C语言的物联网
开发语言·后端·golang
请你喝好果汁64128 分钟前
R 语言植沟文件读取及保存方式
开发语言·r语言
志尊宝30 分钟前
Android 单例模式:实现可复用数据存储
android·javascript·单例模式
西农小陈33 分钟前
Python-基于PyQt5,wordcloud,pillow,numpy,os,sys等的智能词云生成器
开发语言·python·小程序·pycharm·numpy·pyqt·pillow
孔明click331 小时前
Sa-Token v1.40.0 发布 🚀,来看看有没有令你心动的功能!
java·sa-token·springboot·权限·权限认证
人生偌只如初见1 小时前
ElasticSearch学习笔记-解析JSON格式的内容
java·elasticsearch
XiaoyuEr_66881 小时前
maven构件子模块步骤及注意事项
java·前端·maven
drebander1 小时前
Maven 项目的基本结构
java·maven