zoukankan      html  css  js  c++  java
  • Android中加载数据库到data/data下的当前包中

    public class DBManager
    {
        private final int BUFFER_SIZE = 400000;
        private static final String PACKAGE_NAME = "com.city.list.main";
        private static final String DB_NAME = "china_province_city_zone.db";
        private 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_province_city_zone);
                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)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return database;
        }
    
        public void closeDatabase()
        {
            this.database.close();
        }
    }

    一个工具类,可以直接把raw文件下的db数据库写入到data下。

  • 相关阅读:
    layui下拉框数据过万渲染渲染问题解决方案
    eclipse debug启动时tomcat报错
    用eclipse的同一个tomcat启动两个javaweb项目
    Json
    @ResponseBody
    SpringMVC Controller 介绍
    tianmao项目的学习笔记
    Thymeleaf入门
    Thymeleaf th:include,th:replace使用
    X 在Windows上使用orakill结束oracle会话的线程
  • 原文地址:https://www.cnblogs.com/sy171822716/p/2800775.html
Copyright © 2011-2022 走看看