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

Android项目Java读取assets目录TXT文件触发FileNotFoundException

Android中读取Assets目录下文件的解决方案

你遇到的问题根源在于:Android项目里assets目录下的文件会被打包进APK,运行时并不存在于设备的常规文件系统路径中,所以直接用File类指定相对路径是无法访问到的。必须通过Android提供的AssetManager来读取这类资源文件。

正确的实现代码

在你的HelloArActivityTest2.java中,替换原有代码为以下逻辑:

try {
    // 获取AssetManager实例(Activity中可直接调用getAssets())
    AssetManager assetManager = getAssets();
    // 打开目标文件的输入流,路径为assets目录下的相对路径:models/prov.txt
    InputStream inputStream = assetManager.open("models/prov.txt");
    
    Scanner myReader = new Scanner(inputStream);
    int counter = 0;
    while (myReader.hasNextLine() && counter <= 10) {
        String data = myReader.nextLine();
        System.out.println(data);
        counter++;
    }
    
    // 关闭资源
    myReader.close();
    inputStream.close();
} catch (IOException e) {
    e.printStackTrace();
}

关键注意事项

  • 确认文件位置:确保prov.txt确实放在app/src/main/assets/models/目录下,assets目录必须位于main文件夹下,目录结构要完全匹配代码中的相对路径。
  • 非Activity类调用:如果是在非Activity类中读取,需要传入Context对象,通过context.getAssets()获取AssetManager实例。
  • 无需额外复制文件:Android Studio编译打包时会自动将assets目录下的所有文件打包进APK,不需要手动复制到项目其他位置。

内容的提问来源于stack exchange,提问作者Borja Davó

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:41:29