我有一个扩展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应该就是它所说的那样,只需提供对我的资产文件夹的访问权限。我在这里错过了什么吗?我该如何以更好的方式处理这个问题?
答案 0 :(得分:3)
以下是从资产中读取的API演示。文件名语义与打开FD相同:
通过将“assets”目录放在与“res”目录相同的级别来添加资产。 (查看ApiDemos完整源代码以查看此内容。)
获取要从字符串资源加载的资产的文件名是......异常......你可能不想这样做。