You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio读取外部存储boot.txt报错:无此文件或目录且内容为空

排查Android读取外部存储boot.txt文件报错" No such file or directory"的解决方案

下面是几个针对性的排查和修复方向:

  • 确认文件实际路径是否匹配
    Environment.getExternalStorageDirectory()在Android 10(API 29)及以上已被废弃,且不同系统版本的外部存储根目录访问规则有差异。很多时候你以为文件在根目录,实际可能存放在Downloads、Documents这类子目录中。先通过文件管理器确认boot.txt的完整路径,比如如果在Downloads目录,代码应修改为:

    File textFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "boot.txt");
    

    另外,Android 10+启用了分区存储机制,直接访问根目录文件会被限制,建议改用Context.getExternalFilesDir()或者MediaStore API来访问外部文件。

  • 检查存储权限是否配置到位

    • 首先在AndroidManifest.xml中声明必要权限:
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      <!-- Android 13及以上需单独申请媒体权限 -->
      <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
      <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
      <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
      
    • Android 6.0(API 23)及以上系统需要动态申请权限,在调用readFile()方法前先做权限检查:
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
          ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 100);
      } else {
          readFile();
      }
      
  • 完善异常信息以便精准定位
    当前代码仅打印栈轨迹,没有展示具体错误详情,建议修改catch块,把错误信息显示出来:

    catch (IOException e) {
        e.printStackTrace();
        String errorMsg = "读取失败: " + e.getMessage();
        Toast.makeText(this, errorMsg, Toast.LENGTH_LONG).show();
    }
    

    这样能直接看到是路径不存在、权限不足还是其他问题。

  • 验证isExternalStorageReadable()的实现逻辑
    你代码中用到的isExternalStorageReadable()如果实现有误,会导致存储状态判断错误。标准的实现逻辑应该是:

    public boolean isExternalStorageReadable() {
        String state = Environment.getExternalStorageState();
        return Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state);
    }
    

    如果你的实现和这个不一致,可能会出现明明存储不可读却执行读取逻辑的情况。

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:03:28