android 导入外部数据库注意事项

在androidstudio中,可以把db文件放在assets文件夹下(在main下创建)



在将db导入时注意要先创建对应的文件夹,否则会报错

 new File(DB_PATH).mkdirs();
        File dbFile=new File(dbfileString);
        if (dbFile.exists()){
            dbFile.delete();
        }
        try {
            dbFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }


public class ImportDB {
    private final int BUFFER_SIZE = 10000;
    public static final String DB_NAME = "ChinaCity"; //保存的数据库文件名
    public static final String PACKAGE_NAME = "com.mapplication";//工程包名
    public static final String DB_PATH = "/data"
            + Environment.getDataDirectory().getAbsolutePath() + "/"
            + PACKAGE_NAME + "/databases";  //在手机里存放数据库的位置--/data/data/com.zhaninternship.mapplication/databases/ChinaCity
    private Context context;

    public ImportDB(Context context) {
        this.context = context;
    }

    public void copyDatabase() {
        String dbfileString = DB_PATH + "/" + DB_NAME;
        new File(DB_PATH).mkdirs();
        File dbFile=new File(dbfileString);
        if (dbFile.exists()){
            dbFile.delete();
        }
        try {
            dbFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            InputStream is = this.context.getClass().getClassLoader().getResourceAsStream("assets/" + "ChinaCity.db");
            FileOutputStream fos = new FileOutputStream(dbfileString);
            byte[] buffer = new byte[BUFFER_SIZE];
            int count=0;
            while((count=is.read(buffer))>0){
                fos.write(buffer, 0, count);
            }
            fos.flush();
            fos.close();//关闭输出流
            is.close();//关闭输入流
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值