【问题标题】:not found as file or resource in assets folder在资产文件夹中找不到文件或资源
【发布时间】:2016-06-02 16:10:32
【问题描述】:

我有一个问题,为什么无法访问我的资产文件夹中的文件?

文件夹

我的代码

Uri path = Uri.parse("android.resource://com.hackro.tutorials.myapplication/raw/comprobante.pdf");

String newPath = path.toString();

Resources res = getResources();

try {

    PdfReader reader = new PdfReader(newPath);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("/sdcard/evidencia.pdf"));
    AcroFields fields = stamper.getAcroFields();

    fields.setField("Referencia", referencia);

    fields.setField("Fecha y Hora", fechahora);
    fields.setField("Tipo", tipo);
    fields.setField("Operacion", operacion);
    fields.setField("no. tarjeta", tarjeta);
    fields.setField("vencimiento", vencimiento);
    fields.setField("monto", monto);
    fields.setField("concepto", concepto);
    fields.setField("Nombre", nombre);
    fields.setField("Autorizacion", autorizacion);


    stamper.setFormFlattening(true);
    stamper.close();
    reader.close();
} catch (Exception e) {
    Log.e("error:   ", e.getMessage());
}

例外

java.io.IOException: android.resource://com.hackro.tutorials.myapplication/raw/comprobante.pdf not found as file or resource.

【问题讨论】:

    标签: android android-assets


    【解决方案1】:

    这里有一些问题。

    首先,资源不是资产。您正在尝试使用 android.resource 方案来访问资产,就好像它是原始资源一样,这将不起作用。

    其次,您正在构造一个Uri,然后将其转换为字符串,然后尝试将其包装在File 对象中。对于任何类型的Uri,这永远都行不通。

    第三,资源和资产都不是设备文件系统上的文件。它们是开发机器文件系统上的文件。它们是设备上 APK 文件中的条目。您无法获得指向资源或资产的 File 对象。

    Context 上使用getAssets()(例如,您的ActivityService)以获得AssetManager。然后,在 AssetManager 上调用 open("comprobante.pdf") 以获取资产上的 InputStream。将其传递给PdfReader 构造函数,并希望您的PDF 库支持InputStream

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 2021-08-05
      相关资源
      最近更新 更多