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下。

  • 相关阅读:
    STM8S PWM输出停止后 IO口电平输出
    STM8 输出比较极性
    无法打开包括文件: “corecrt.h”: No such file or directory
    VC++深入详解学习笔记
    x86系列微处理器中8种描述符表https://blog.csdn.net/u014162133/article/details/46573873
    计算机目录
    windbg双机调试
    二叉树
    list
    vector
  • 原文地址:https://www.cnblogs.com/sy171822716/p/2800775.html
Copyright © 2011-2022 走看看