我工作的应用程序有一个外部SQLite数据库(位于assets文件夹中)。我的朋友在应用程序的iPhone版本中使用相同的DB文件。 DB文件的内容不断更新。由于两个项目都在同一个存储库中,因此我们创建了一个Shared文件夹,我们保留了DB文件,因此两个项目都可以链接到该共享资源。它适用于iPhone项目但在Android中失败。
在Eclipse中,我点击 assets / new / file 并点击高级然后链接到文件系统中的文件 。该文件出现在assets文件夹中(在Eclipse中),但我无法从JAVA代码访问它。
为什么这不起作用?还有其他的东西是将外部文件链接到Eclipse中的项目吗?
由于
编辑:
我使用此代码打开资产文件:
OutputStream os = new FileOutputStream(db_path + DB_NAME);
byte []b = new byte[1024];
int i, r;
//load list of files from 'data' folder
String[] fileCollection = am.list("data");
Arrays.sort(fileCollection);
for(i=0;i<fileCollection.length;i++)
{
//String fn = String.format(DB_NAME"%dd.db", (i + 1));
String fn = DB_NAME + "." + (i + 1);
if(fileCollection[i].equals(fn) == false){
break;
}
InputStream is = am.open("data/"+fn);
while((r = is.read(b)) != -1) {
os.write(b, 0, r);
}
is.close();
}
os.close();
答案 0 :(得分:1)
从你提供的详细信息中我得出结论,你不能直接从资产目录中使用数据库文件,你必须将该数据库文件复制到应用程序的内部存储data/data/database/
然后使用它。
编辑:
我认为 Android环境无法识别您系统文件的物理路径,因此当我们尝试链接任何文件以获取资产或任何属于android项目层次结构的文件夹时,它就可以找不到从系统路径链接的文件。
So to make it working in android you have to put that file in your asset directory physically, not virtually (by putting file link in asset).
希望我没错。如果是,请告诉我这个主题。
感谢。