Android Studio替换内置存储文本文件行内容 运行报错解决求助
问题修复方案
核心错误原因
- 路径拼接逻辑错误:
Environment.getExternalStorageDirectory()已经返回/storage/emulated/0前缀,你定义的PATH自带同前缀,拼接后生成的路径完全错误,同时PATH的值缺少data层级,和你实际的目标文件路径不匹配 - 缺少存储权限配置:Android 高版本对公共存储的读写需要动态申请权限,未授权会导致文件读写失败
- 你看到的两个报错中,
E/libEGL: Invalid file path for libcolorx-loader.so是部分设备的系统级渲染类警告,和当前文件操作逻辑无关,无需单独处理;E/Parcel: Reading a NULL string not supported here.是文件读取失败返回空值触发的底层报错,修复路径和权限后会自动消失。
具体修复步骤
- 修正路径定义
将原全局PATH定义修改为:
public static final String PATH = "Android/data/File.txt";
原代码onCreate中构造的infile对象没有被使用,属于冗余代码可以直接删除。
- 补充权限配置
在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
如果你的应用targetSdkVersion >= 29,在application节点添加属性临时适配分区存储:
<application ... android:requestLegacyExternalStorage="true">
增加动态权限申请逻辑
在onCreate中调用文件操作方法前,先判断是否已经获得存储权限,未授权则先发起动态权限申请,用户同意后再执行文件读写逻辑。优化异常排查逻辑
将catch块的通用提示改为打印具体异常信息,方便后续定位问题:
} catch (Exception e) { e.printStackTrace(); System.out.println("Problem reading file: " + e.getMessage()); }
内容的提问来源于stack exchange,提问作者Madara Uchiha
相关产品推荐
相关产品推荐

