Java.io.FileNotFoundException: /file/path.jpg 打开失败: ENOENT (没有这个文件或目录)

4

我正在尝试将一张图片保存到parse.com,需要将其转换为字节数组。我决定尝试使用apache commons-io来完成这个过程,但它并没有正常工作。以下是我的代码片段:

private void saveImage() throws IOException {
    // TODO Auto-generated method stub

    InputStream header = new FileInputStream("/ClashMMA/res/drawable-hdpi/beatdown.jpg");

    ParseFile file = new ParseFile(toByteArray(header));
    try{
        file.save();
    } catch (ParseException e) {
        e.printStackTrace();
    }

    ParseObject displayImage = new ParseObject("displayImage");
    displayImage.put("header", file);
    try{
        displayImage.save();
    } catch (ParseException e1){
        e1.printStackTrace();
    }
}


private byte[] toByteArray(InputStream header) throws IOException {
    // TODO Auto-generated method stub
     ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int l;
        byte[] data = new byte[1024];
        while ((l = header.read(data, 0, data.length)) != -1) {
          buffer.write(data, 0, l);
        }
        buffer.flush();
        return buffer.toByteArray();

}

我的错误是这样的:
java.io.FileNotFoundException: /ClashMMA/res/drawable-hdpi/beatdown.jpg: open failed: ENOENT (没有这个文件或目录)
但我确定文件在那里,因为我去了我的文件目录(在eclipse中),右键点击,然后点击“复制限定名称”。这基本上是复制文件路径。我尝试了一些其他路径,比如直接从我的电脑上,和在我的src文件夹里。请问有人能告诉我我做错了什么吗?为什么它无法读取文件,而实际上文件确实存在?请详细解释。

1
我遇到了这个问题。我通过编程方式删除了文件夹,然后手动创建它,问题得到了解决!!! - Bobs
1个回答

5
您在Eclipse项目中的文件不在(真实或模拟的)Android文件系统中,这也是Android FileInputStream查找位置。(有充分理由! Eclipse的主机文件系统不会在真实的Android设备上存在。)
您基本上有两个选择:
1.将它们放入APK存档中,以便可以使用getSystemResourceAsStream加载它们:请参见如何从类路径加载Android ImageView的图像? 2.将文件复制到Android文件系统中,以便FileInputStream可以找到它们。

您可以将所需的每个图像添加到资源文件夹中。 - Julián Chamalé

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接