我有一个扩展 SQLiteOpenHelper 的数据库帮助器类,在 onCreate 中,我想读取各种文本文件,每个文件都包含一个 SQL CREATE 命令。文本文件在我项目的 Assets 文件夹中,我正尝试按如下方式使用 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
这显然似乎是从根目录 ('/') 开始的绝对路径,而其他 AssetManager 'open' 方法被记录为访问 'assets' 文件夹中的文件。不幸的是,这些方法返回一个 InputStream,它不能用于直接实例化一个 FileReader。
这对我来说没有意义 - 当然 AssetManager 应该正如它所说的那样,只需授予对我的 Assets 文件夹的访问权限。我在这里错过了什么吗?我应该如何以更好的方式解决这个问题?
最佳答案
这是一个读取 Assets 的 API 演示。文件名语义与打开 FD 相同:
Assets 是通过将“assets”目录放入与“res”目录相同级别的目录来添加的。 (查看 ApiDemos 完整源代码以了解这一点。)
从字符串资源中获取要加载的 Assets 的文件名是……不寻常的……。您可能不想这样做。
关于android - 使用 AssetManager openFD() 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5227874/