Android无法在资源文件夹中找到文件

时间:2014-06-09 21:56:02

标签: android

我正在尝试在我的应用中打开.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。

对我做错了什么的任何想法? 非常感谢你。

1 个答案:

答案 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();