在资产文件夹中找不到文件或资源

not found as file or resource in assets folder

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

文件夹

我的代码

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.resource 方案来访问资产,就好像它是原始资源一样,这将不起作用。

其次,您正在构建一个 Uri,然后将其转换为字符串,然后尝试将其包装在 File 对象中。对于任何类型的 Uri.

这将永远行不通

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

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