使用 BitmapFactory.decodeFile 找不到 Android Studio 文件异常

Posted

技术标签:

【中文标题】使用 BitmapFactory.decodeFile 找不到 Android Studio 文件异常【英文标题】:Android Studio file not found Exception using BitmapFactory.decodeFile 【发布时间】:2016-02-21 15:23:12 【问题描述】:

我正在尝试使用

将图像加载到 imageView

位图 myBitmap = BitmapFactory.decodeFile("Fotos/i0.png");

    ImageView myImage = (ImageView) findViewById(R.id.im1);
    myImage.setImageBitmap(myBitmap);

使用 AVE 运行时,这些行会导致异常 java.io.FileNotFoundException:/Fotos/i0.png:打开失败:ENOENT(没有这样的文件或目录)

我尝试了几个位置来放置文件: 应用程序\src\main\照片\ 应用\src\main\res\照片\

甚至 应用\src\main\assets\照片\

一旦我必须从包含 700 个文件的文件夹中加载 1 个图像,我不想使用 assets\drawable。

【问题讨论】:

【参考方案1】:

首先,资源和资产不是 android 设备上的文件。您不使用 decodeFile() 或任何类型的文件 I/O 来访问它们。

其次,您不能在项目树中随机创建新目录(例如,app\src\main\Fotosapp\src\main\res\Fotos\)并期望它们会被打包到您的 APK 中,更不用说在设备上可用了。

您的主要选择是:

将它们作为可绘制资源(例如app/src/main/res/drawable-nodpi/),然后使用R 常量将它们放入您的ImageView(例如R.drawable.foo

将它们作为资产(app/src/main/assets/Fotos/),然后使用AssetManager在资产上获取InputStream,然后使用BitmapFactorydecodeStream()加载图像

【讨论】:

以上是关于使用 BitmapFactory.decodeFile 找不到 Android Studio 文件异常的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)