我正在开发一个应用程序,我遇到了两个问题:
>如何打开存储在assets文件夹中的SQLite数据库?我可以使用什么路径访问应用程序中的assets文件夹?这是我到目前为止所拥有的:
path = "file:///asset_folder/database.dat";
SQLiteDatabase db = null;
db = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
>如何在安装应用程序或首次运行期间将文件复制到内部存储器(/ data / data / …)?我想在首次运行期间将assets文件夹中的文件夹复制到内部存储器中.
任何建议将不胜感激.
解决方法:
我有同样的问题,所以我将db文件移动到res / raw文件夹,并像这样访问它:
InputStream inputStream = getBaseContext().getResources().openRawResource(R.raw.mySQLiteFile);
然后我尝试将文件移动到/data/data/com.mydomain.www/databases/文件夹中,但是我会得到一个例外,因为目标路径不存在,所以我做了File(destPath).getParentFile() .mkdir();
从那里,我调用了一个复制db方法来将db传输到目标.
public void CopyDB(InputStream inputStream, OutputStream outputStream) throws IOException {
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}
InputStream是db文件,OutputStream是FileOutputStream(destPath).
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!