启动Android App时,动态将Sqlite数据库文件导入到手机中类方法

package com.aqioo.db;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import com.aqioo.R;
 

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

//在res文件夹下新建 raw 文件夹
//数据库文件放在 \res\raw\test.db
//在调用Sqlite的操作前实例化此类即可
//code by:博客园-曹永思
public class ImportDbFileToPhone {
    //        /data/data/名称空间(com.aqioo)/databases
    private static final String DATABASE_PATH = "/data/data/com.aqioo/databases";

    private static final int DATABASE_VERSION = 0;

    private static final String DATABASE_NAME = "test.db";//数据库

    private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME;

    private Context context;

    private SQLiteDatabase database;

    public ImportDbFileToPhone(Context context) {
        this.context = context;

        File file = new File(outFileName);
        if (file.exists()) {
            database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
            if (database.getVersion() != DATABASE_VERSION) {
                database.close();
                file.delete();
            }
        }
        try {
            buildDatabase();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private void buildDatabase() throws Exception {
        InputStream myInput = context.getResources().openRawResource(
                R.raw.aqiooapp);
        File file = new File(outFileName);

        File dir = new File(DATABASE_PATH);
        if (!dir.exists()) {
            if (!dir.mkdir()) {
                throw new Exception("创建失败");
            }
        }

        if (!file.exists()) {
            try {
                OutputStream myOutput = new FileOutputStream(outFileName);

                byte[] buffer = new byte[1024];
                int length;
                while ((length = myInput.read(buffer)) > 0) {
                    myOutput.write(buffer, 0, length);
                }
                myOutput.close();
                myInput.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }
    
}

 欢迎转载,转载请注明出处,希望帮到更多人。

 

转载于:https://www.cnblogs.com/yonsy/p/3216520.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值