将raw里面的数据库文件写入到data中
2015-12-29 11:09
387 查看
package com.city.list.db; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import com.city.list.main.R; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.os.Environment; /** * 将raw中得数据库文件写入到data数据库中 * @author sy * */ public class DBManager { private final int BUFFER_SIZE = 400000; private static final String PACKAGE_NAME = "com.city.list.main"; public static final String DB_NAME = "china_city_name.db"; public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME ; // 存放路径 private Context mContext; private SQLiteDatabase database; public DBManager(Context context) { this.mContext = context; } /** * 被调用方法 */ public void openDateBase() { this.database = this.openDateBase(DB_PATH + "/" + DB_NAME); } /** * 打开数据库 * * @param dbFile * @return SQLiteDatabase * @author sy */ private SQLiteDatabase openDateBase(String dbFile) { File file = new File(dbFile); if (!file.exists()) { // 打开raw中得数据库文件,获得stream流 InputStream stream = this.mContext.getResources().openRawResource(R.raw.china_city_name); try { // 将获取到的stream 流写入道data中 FileOutputStream outputStream = new FileOutputStream(dbFile); byte[] buffer = new byte[BUFFER_SIZE]; int count = 0; while ((count = stream.read(buffer)) > 0) { outputStream.write(buffer, 0, count); } outputStream.close(); stream.close(); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile, null); return db; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return database; } public void closeDatabase() { if (database != null && database.isOpen()) { this.database.close(); } } }
相关文章推荐
- redis上tomcat和session共享的问题
- 【Hibernate3】(3)数据库生成策略
- oracle用户解锁
- windows 下安装mysql解压缩包
- window 下PHP redis扩展插件
- Sql Server 数据库恢复和日志文件的详细介绍
- remap_tablespace修改数据库表空间
- 数据库的增删改查
- LoadRunner测试MySql
- MongoDB基本管理命令
- xp/win7中系统安装memcached服务,卸载memcached服务,以及删除memcached服务
- SQL truncate 、delete与drop区别
- Class.forName(“com.mysql.jdbc.Driver”)解析
- 基于redis的sentinel的主从复制和主从切换(二)
- 怎么去看懂mysql的执行计划
- oracle课堂笔记
- mysql 行锁一则
- Mysql联合查询UNION和UNION ALL的使用介绍 可以查询出多张没有关联关系的表的数据
- redis 下载启动,设置、查询超时时间
- MySQL + Atlas --- 部署读写分离