在资产文件夹中找不到文件或资源
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
(例如,您的 Activity
或 Service
)上使用 getAssets()
以获得 AssetManager
。然后,对该 AssetManager
调用 open("comprobante.pdf")
以获得资产的 InputStream
。将其传递给 PdfReader
构造函数并希望您的 PDF 库支持 InputStream
.
我有一个问题,为什么无法访问我的资产文件夹中的文件?
文件夹
我的代码
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
(例如,您的 Activity
或 Service
)上使用 getAssets()
以获得 AssetManager
。然后,对该 AssetManager
调用 open("comprobante.pdf")
以获得资产的 InputStream
。将其传递给 PdfReader
构造函数并希望您的 PDF 库支持 InputStream
.