• 将raw里面的数据库文件写入到data中


    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();
            }
        }
    }
  • 相关阅读:
    PYTHON简介
    zabbix4.0搭建2
    zabbix4.0搭建1
    zabbix监控
    Linux中vim编辑命令
    零基础逆向工程25_C++_02_类的成员权限_虚函数_模板
    零基础逆向工程24_C++_01_类_this指针_继承本质_多层继承
    零基础逆向工程23_PE结构07_重定位表_IAT表(待补充)
    零基础逆向工程22_PE结构06_导入表
    零基础逆向工程21_PE结构05_数据目录表_导出表
  • 原文地址:https://www.cnblogs.com/zzw1994/p/5068827.html
Copyright © 2020-2023  润新知