使用AssetManager openFD()的问题

时间:2011-03-08 03:07:02

标签: android

我有一个扩展SQLiteOpenHelper的DB帮助器类,在onCreate中,我想读取各种文本文件,每个文件包含一个SQL CREATE命令。文本文件位于我项目的资产文件夹中,我正在尝试使用FileReader,如下所示......

@Override
public void onCreate(SQLiteDatabase db) {

    AssetManager am = context.getAssets();
    FileReader tableListFileReader = new FileReader(am.openFd(context.getString(R.string.db_schema_filelist_filename)).getFileDescriptor());

我得到如下例外......

java.io.FileNotFoundException: /npvr_db_schema_create_tables.txt

这显然是来自root('/')的绝对路径,而其他AssetManager'open'方法被记录为访问'assets'文件夹中的文件。不幸的是,这些方法返回一个InputStream,它不能用于直接实例化FileReader。

这对我来说没有意义 - 当然,AssetManager应该就是它所说的那样,只需提供对我的资产文件夹的访问权限。我在这里错过了什么吗?我该如何以更好的方式处理这个问题?

1 个答案:

答案 0 :(得分:3)

以下是从资产中读取的API演示。文件名语义与打开FD相同:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ReadAsset.html

通过将“assets”目录放在与“res”目录相同的级别来添加资产。 (查看ApiDemos完整源代码以查看此内容。)

获取要从字符串资源加载的资产的文件名是......异常......你可能不想这样做。