我正在尝试从我的资源文件夹中读取pdf文件,但我不知道如何获取pdf文件的路径。 我右键单击pdf文件并选择"复制路径"然后粘贴
这是我的代码:
File file = new File("/Users/zulqarnainmustafa/Desktop/ReadPdfFile/app/src/main/assets/Introduction.pdf");
if (file.exists()){
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
this.startActivity(intent);
}
catch (ActivityNotFoundException e) {
Toast.makeText(this, "No application available to view PDF", Toast.LENGTH_LONG).show();
}
}else{
Toast.makeText(this, "File path not found", Toast.LENGTH_LONG).show();
}
我总是找不到文件,帮我创建File对象或者让我知道如何获得我用file:///android_asset/Introduction.pdf
尝试过的文件的确切路径,但没有成功。我也尝试使用Image.png,但从未获得file.exists()成功。我正在使用Mac版Android工作室。感谢
答案 0 :(得分:4)
从资产获取输入流并将其转换为文件对象。
File f = new File(getCacheDir()+"/Introduction.pdf");
if (!f.exists())
try {
InputStream is = getAssets().open("Introduction.pdf");
byte[] buffer = new byte[1024];
is.read(buffer);
is.close();
FileOutputStream fos = new FileOutputStream(f);
fos.write(buffer);
fos.close();
} catch (Exception e) { throw new RuntimeException(e); }
答案 1 :(得分:0)
你能试试这段代码吗?
background: linear-gradient(white, #DADADA);
然后尝试
AssetManager am = getAssets();
InputStream inputStream = am.open("Indroduction.pdf");
File file = createFileFromInputStream(inputStream);
private File createFileFromInputStream(InputStream inputStream) {
try{
File f = new File("new FilePath");
OutputStream outputStream = new FileOutputStream(f);
byte buffer[] = new byte[1024];
int length = 0;
while((length=inputStream.read(buffer)) > 0) {
outputStream.write(buffer,0,length);
}
outputStream.close();
inputStream.close();
return f;
}catch (IOException e) {
//Logging exception
}
return null;
}
答案 2 :(得分:0)
Kotlin 中的短转换器(将资产存储为缓存文件):
fun fileFromAsset(name: String) : File =
File("$cacheDir/$name").apply { writeBytes(assets.open(name).readBytes()) }
cacheDir
只是 this.getCacheDir()
的简写,应该为您预定义。