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

Android Studio读取drawable图片时File.exists()返回false怎么办

核心错误原因

你代码里写的/Users/jakesmith/Desktop/Attachments/app/src/main/res/drawable/myimage.png是开发电脑本地的绝对路径,安卓应用运行在模拟器/实体设备上时,设备自身的文件系统里完全不存在这个路径,exists()检测自然永远返回false。
另外res/drawable目录下的资源会在APK编译阶段被打包进安装包,不会以独立可访问的文件形式存在于设备存储中,本身就不支持通过File类按文件路径直接读取。

正确实现方案
  • 常规场景直接通过资源ID加载,这是官方推荐的最简实现,不需要手动做文件存在校验、Bitmap解码:
// Android Studio会自动为drawable目录下的myimage.png生成R.drawable.myimage资源ID
imageView.setImageResource(R.drawable.myimage)
  • 如果你需要拿到Bitmap对象做二次处理,使用BitmapFactory.decodeResource方法从应用资源中解码,不要用decodeFile:
val myBitmap = BitmapFactory.decodeResource(resources, R.drawable.myimage)
// 这里可以对myBitmap做自定义处理
imageView.setImageBitmap(myBitmap)
  • 如果你必须依赖File类的路径校验、文件读写逻辑,请不要把图片放在res/drawable目录:
    • 可以将图片放到app/src/main/assets目录下,通过assets.open("myimage.png")获取输入流读取,注意assets内的资源同样没有独立文件路径
    • 也可以在APP首次启动时,将资源从APK内拷贝到应用私有存储/外部存储的指定路径,后续再通过File类访问对应路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:45:38