zoukankan      html  css  js  c++  java
  • 将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();
            }
        }
    }
  • 相关阅读:
    1040 最大公约数之和
    51nod 1215 数组的宽度
    51nod 1423 最大二“货” 单调栈
    51nod 1437 迈克步 单调栈
    1564 区间的价值
    51nod 1294 修改数组
    51nod1693 水群 最短路
    51nod1052 最大M子段和
    我不管,这就是水题《1》
    河工大校赛 Hmz 的女装 http://218.28.220.249:50015/JudgeOnline/problem.php?id=1265
  • 原文地址:https://www.cnblogs.com/zzw1994/p/5068827.html
Copyright © 2011-2022 走看看