我正在尝试在我的应用中打开.pdf。 .pdf文件嵌入了我的应用程序,它将在“assets”文件夹(或任何其他文件夹,如果可行)中提供。 该文件可以直接在Eclipse中打开,它可以在assets文件夹中的finder(mac)中找到....所以我知道它就在那里。
在我的代码中我有这个:
AssetManager assetManager = getAssets();
String[] files = null;
try
{
files = assetManager.list("");
}
catch (IOException e1)
{
e1.printStackTrace();
}
System.out.println("file = " + files[1]);
File file = new File(files[1]);
if (file.exists())
{
// some code to open the .pdf file
}
该日志将文件名显示为“file = privacy.pdf”(我的文件),但file.exists()始终返回false。
对我做错了什么的任何想法? 非常感谢你。
答案 0 :(得分:2)
您不能只从资产名称创建File
。您实际上是在尝试创建一个完整路径为“privacy.pdf”的文件。您只需将资产打开为InputStream
。
InputStream inputStream = getAssets().open("privacy.pdf");
如果你绝对需要它作为File
对象,你可以将InputStream
写入应用程序的文件目录并使用它。此代码会将资产写入一个文件,然后您可以像显示问题一样使用该文件。
String filePath = context.getFilesDir() + File.separator + "privacy.pdf";
File destinationFile = new File(filePath);
FileOutputStream outputStream = new FileOutputStream(destinationFile);
InputStream inputStream = getAssets().open("privacy.pdf");
byte[] buffer = new byte[1024];
int length = 0;
while((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
outputStream.close();
inputStream.close();