Assets资源文件存储问题
2015-12-02 16:40
423 查看
今天调试遇到一个问题,将assets下的db数据库文件安装后,在data/data/package/databases下面只有该db文件,但是文件内容为空。
原因是:data/data/package/databases下的文件只是一个映射。当android需要自带数据时,我们一般习惯放在data/data/package/databases下,这是因为android程序文件中的数据库文件都默认存放在data/data/package/databases目录下。
当我们需要把数据库文件存放在内存卡中,就要在asset中放置一个db库文件 ,每次安装的时候要把这个asset库中的数据写入到内存下的库文件中。
File file = getDatabasePath("a.db");
if (!file.exists()) {
file.getParentFile().mkdirs();
try {
InputStream is = getAssets().open("a.db");
//InputStream is = getApplicationContext().getResources().openRawResource(R.raw.smdd);
FileOutputStream fos = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int count = 0;
while ((count=is.read(buffer))!=-1) {
fos.write(buffer,0,count);
}
fos.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
存放在assets下,可以允许你直接通过assets文件夹下的数据库名称来获取SQLiteDatabase对象。
原因是:data/data/package/databases下的文件只是一个映射。当android需要自带数据时,我们一般习惯放在data/data/package/databases下,这是因为android程序文件中的数据库文件都默认存放在data/data/package/databases目录下。
当我们需要把数据库文件存放在内存卡中,就要在asset中放置一个db库文件 ,每次安装的时候要把这个asset库中的数据写入到内存下的库文件中。
File file = getDatabasePath("a.db");
if (!file.exists()) {
file.getParentFile().mkdirs();
try {
InputStream is = getAssets().open("a.db");
//InputStream is = getApplicationContext().getResources().openRawResource(R.raw.smdd);
FileOutputStream fos = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int count = 0;
while ((count=is.read(buffer))!=-1) {
fos.write(buffer,0,count);
}
fos.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
存放在assets下,可以允许你直接通过assets文件夹下的数据库名称来获取SQLiteDatabase对象。
相关文章推荐
- emacs配置文件
- solr 中文分词器配置
- 使用git bush 生成github SSH公钥
- 1202c语言初始以及Xcode简介
- Bootstrap_排版
- android使用GreenDao操作数据库
- 如何判断一个企业网站的质量好坏
- 1021. Deepest Root (25)
- 【Leetcode】Contains Duplicate
- Dynamic linking static library on iOS
- Android onTouchEvent, onClick及onLongClick的调用机制
- Android Studio学习笔记4常用弹出窗口和解决输出中文乱码的问题
- redis spring的使用
- canvas 绘制五角星
- #读书笔记#温伯格技术思想三部曲:程序开发心理学——第10章、积极性、培训及经验
- openjudge 踩方格
- Java基本知识(连载)-数据类型和常用运算
- c#Lamdba表达式与委托
- jquery 倒计时代码
- iOS 容器视图控制器