【发布时间】:2013-09-19 07:06:05
【问题描述】:
在主要活动中,我有这个方法将文件从assets 复制到databases 文件夹:
try{
// CHECK IS EXISTS OR NOT
SQLiteDatabase dbe = SQLiteDatabase.openDatabase("/data/data/com.henanet.dalel/databases/mydb.sqlite",null, 0);
dbe.close();
// COPY IF NOT EXISTS
AssetManager am = getApplicationContext().getAssets();
OutputStream os = new FileOutputStream("/data/data/com.henanet.dalel/databases/mydb.sqlite");
byte[] b = new byte[100];
int r;
InputStream is = am.open("mydb.sqlite");
while ((r = is.read(b)) != -1) {
os.write(b, 0, r);
}
is.close();
os.close();
}
catch(Exception e)
{
}
但是一旦用户安装了应用程序,他就会在 LogCat 中得到这个错误:
09-14 22:57:25.694: I/Database(19903): sqlite returned: error code = 14, msg = cannot open file at source line 25467
09-14 22:57:25.694: E/Database(19903): sqlite3_open_v2("/data/data/com.henanet.dalel/databases/mydb.sqlite", &handle, 2, NULL) failed
【问题讨论】:
-
你是如何创建你试图从'/data/data'文件夹打开的数据库的。 Android 期望
android_metadata,local每个数据库中的表。 -
@new Ques 检查我的答案可能有帮助