存储文件的位置,以便在Android应用中使用InputStream

时间:2014-02-26 19:16:07

标签: android apache-poi inputstream

我正在开展一个项目,我必须在Excel工作表中插入公司徽标。 我正在使用apache-poi,但我收到找不到文件异常。

我将我的徽标存储在我的drawable文件夹中,稍后又存放在我的资源文件夹中,仍然是同样的事情。

这是我的代码

InputStream is = new FileInputStream("logo.png");
    byte [] bytes = IOUtils.toByteArray(is); 
    int pictureIndex = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
    is.close();

    CreationHelper helper = wb.getCreationHelper();
    patriarch = sheet.createDrawingPatriarch();
    ClientAnchor anchor = helper.createClientAnchor();

    anchor.setCol1(10);
    anchor.setRow1(3);
    Picture pict = patriarch.createPicture(anchor, pictureIndex);
    pict.resize();

    try {
        FileOutputStream out = new FileOutputStream(root+"/Busotina/Busotina1.xls");
        wb.write(out);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

所以我的问题是,我应该将我的图像存储在某个特定的文件夹中,还是我在处理另一个问题?

1 个答案:

答案 0 :(得分:2)

我认为你应该将想要以编程方式进行交互的文件放在/res/raw文件夹中。然后访问为

InputStream inputStream = activity.getResources().openRawResource(R.raw.logo);

请参阅developer.android上的directory raw。阅读:

  

以原始格式保存的任意文件。要使用原始InputStream打开这些资源,请使用资源ID(即R.raw.filename)调用Resources.openRawResource()。   但是,如果需要访问原始文件名和文件层次结构,可以考虑在assets /目录中保存一些资源(而不是res / raw /)。资产/中的文件未获得资源ID,因此您只能使用AssetManager读取它们。

相关问题