在assets目录下存放本地数据库
来源:互联网 发布:深圳人工智能产业园 编辑:程序博客网 时间:2024/05/22 06:42
对于一些来自本地的庞大数据库,如果还是依靠SQLiteOpenHelper再去创建数据库的话,太耗时耗力了。所以最常见的做法是:将数据库放在assets目录下,跟随apk一起发布出去。存放在该目录下的文件的特点:
1.assets里面存放的都是原生文件,不会对里面的文件转码
2.该目录下的文件只支持读取,即只能获取输入流
3.不在R文件注册
4.可以建文件夹
5.一般存放网页,图片,音乐,数据库,文本文件等:
但是一旦将数据库存储在此目录下,就不能访问该数据库了(因为数据库打不开了)。解决方案是:将数据库拷贝到手机本地目录(手机内存和外存都可以)。
拷贝数据库的最佳时间:项目初始化的时候,一般就是在展示公司Logo,检查版本更新的时候开始拷贝。并且,控制好只拷贝一次。所以在有数据库在assets目录下,需要拷贝的时候,可以新增如下代码,然后在onCreate中调用这个方法完成只拷贝一次:
// 从asserts目录下拷贝文件到files private void copyDB() { // 获取输出流,文件存储目录:data/data/包名/files目录下,文件名相同 File file = new File(getFilesDir(), "xxxxx.db"); // 当文件不存在的时候:才去拷贝,已经存在的不再去拷贝了。 if (!file.exists()) { AssetManager assetManager = getAssets(); try { // 获取输入流 InputStream is = assetManager.open("xxxxx.db"); FileOutputStream fos = new FileOutputStream(file); // 开始读和写 byte[] bys = new byte[1024]; int len; while ((len = is.read(bys)) != -1) { fos.write(bys, 0, len); } is.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); } } }
0 0
- 在assets目录下存放本地数据库
- 如何读取assets目录下存放的原生资源文件
- android studio的assets目录下存放ttf字体格式的问题
- MVC中如何在Views目录下存放css,js,html文件的解决方案
- 读取本地已经存在的数据库,查询已经放在工程目录下的数据库
- ubuntu 12.04 家目录下存在隐藏文件.goutputstream-***
- android res目录下存放图片文件夹 i m h xh xxh
- linux cp进行目录拷贝,目的路径下存在同名目录情况下出现的问题
- 读取Assets目录下的数据库
- 从assets拷贝数据库到file目录
- 在Android Studio中添加assets目录
- 在Android studio中创建assets目录
- 在本地数据库目录或系统数据库目录中已经存在数据库别名""的解决办法
- 在本地数据库目录或系统数据库目录中已经存在数据库别名""的解决办法
- 解决:SQL1005N 在本地数据库目录或系统数据库目录中已经存在数据库别名
- 解决:SQL1005N 在本地数据库目录或系统数据库目录中已经存在数据库别名
- [DB2]在本地数据库目录或系统数据库目录中已经存在数据库别名""的解决办法
- 解决:SQL1005N 在本地数据库目录或系统数据库目录中已经存在数据库别名
- Universal-Image-Loader(android图片缓存)
- 平衡二叉树 java
- Gson通过借助TypeToken获取泛型参数的类型的方法(转)
- Android ViewStub
- 《CSAPP》第一章,第二章总结——来记一篇流水账吧
- 在assets目录下存放本地数据库
- maven构建工程引用包源文件加载
- 理解UIImage 拉伸图片 resizableImageWithCapInsets
- Mac安装Brew
- Direct2D 1.1 开发笔记 特效篇(五) 径向模糊
- HDU1009(贪心)
- uva1462(Fuzzy Google Suggest)
- Android merge优化UI
- 多渠道打包资源