【问题标题】:java.io.FileNotFoundException while creating Bitmap from a File Object on Android在 Android 上从文件对象创建位图时出现 java.io.FileNotFoundException
【发布时间】:2016-04-28 16:37:49
【问题描述】:

我得到一个包含文件的对象:

public class Ordo implements java.io.Serializable{

static final long serialVersionUID = 11223344;

public String id;
public String name;
public String date;
public String status;
public File thumbnail;

我需要将此文件转换为位图以在 Activity 上查看。 我正在执行以下操作:

thumbnail = list.getFileFromId(vid);
    Bitmap pic = null;
    try {
        byte[] buffer = new byte[8192];
        int bytesRead;
        FileInputStream input = new FileInputStream(thumbnail);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();

        while((bytesRead = input.read(buffer)) != -1){
            stream.write(buffer, 0, bytesRead);
            }
        pic = BitmapFactory.decodeByteArray(stream.toByteArray(), 0,    stream.size());
    } catch (Exception e) {

        e.printStackTrace();
    }

但我收到以下错误:

04-28 18:16:16.759: W/System.err(31995): java.io.FileNotFoundException: 1461854326445.png: 打开失败: ENOENT (没有这样的文件或目录) 04-28 18:16:16.779: W/System.err(31995): 在 libcore.io.IoBridge.open(IoBridge.java:456) 04-28 18:16:16.779: W/System.err(31995): 在 java.io.FileInputStream.(FileInputStream.java:76) 04-28 18:16:16.779: W/System.err(31995): 在 com.jre.link.View.onCreate(ViewOrdo.java:83) 04-28 18:16:16.779: W/System.err(31995): 在 android.app.Activity.performCreate(Activity.java:6550) 04-28 18:16:16.779: W/System.err(31995): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 04-28 18:16:16.779: W/System.err(31995): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3102) 04-28 18:16:16.779: W/System.err(31995): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3248) 04-28 18:16:16.779: W/System.err(31995): 在 android.app.ActivityThread.access$1000(ActivityThread.java:197) 04-28 18:16:16.779: W/System.err(31995): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681) 04-28 18:16:16.779: W/System.err(31995): 在 android.os.Handler.dispatchMessage(Handler.java:102) 04-28 18:16:16.779: W/System.err(31995): 在 android.os.Looper.loop(Looper.java:145) 04-28 18:16:16.779: W/System.err(31995): 在 android.app.ActivityThread.main(ActivityThread.java:6872) 04-28 18:16:16.779: W/System.err(31995): 在 java.lang.reflect.Method.invoke(Native Method) 04-28 18:16:16.779: W/System.err(31995): 在 java.lang.reflect.Method.invoke(Method.java:372) 04-28 18:16:16.779: W/System.err(31995): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 04-28 18:16:16.779: W/System.err(31995): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

看来我需要从我的文件对象创建一个物理文件... 知道如何解决吗?

感谢您的回答。

【问题讨论】:

  • 您将文件保存在哪里?使用该代码进行更新。您是否还在清单中添加了适当的权限?
  • 不使用字节数组输出流直接使用BitmapFactory.decodeFile(thumbnail);
  • thumbnail.getAbsolutePath() 的值是多少?
  • 我的文件没有物理保存在硬盘上,它是由服务器以 Java 对象发送的,但这可能不是最简单的方式...

标签: java android


【解决方案1】:

最后,我将尝试通过在我的对象中包含位图而不是文件来找到另一种方法......它会更容易。无论如何感谢您的回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2013-05-24
    • 2014-12-28
    • 2014-04-16
    相关资源
    最近更新 更多