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ó
相关产品推荐
相关产品推荐

