android > 将assets 文件中的数据库导入 包里databases文件夹

public void checkData(){
        //app 的 数据库路径
        String dataPath = getApplicationContext().getDatabasePath("..").getAbsolutePath();
        dataPath = dataPath.replace("..","");//out:/data/data/com.test1/databases/
        // 数据库 文件 路径
        String dataFilePath = dataPath+"/zi_ci.db";
        // 数据库 文件
        File dataFile=new File(dataFilePath);


        //判断数据库文件是否存在
        if(dataFile.exists()){
            Log.d("mft","数据库文件已经存在");

        }else{
            Log.d("mft", "不存在数据库将准备创建");

            File path=new File(dataPath);
            if (path.mkdir()){
                Log.i("mft", "创建数据库文件夹成功");
            }else{
                Log.i("mft", "创建数据库文件夹失败");
            };
            try {
                //得到 assets 资源
                AssetManager assets_am= MainActivity.this.getAssets();
                //得到 assets 数据库文件的输入流
                InputStream is=assets_am.open("keyb_sqlite.db");
                //在包里的数据库文件夹里创建 数据库 空文件
                FileOutputStream fos=new FileOutputStream(dataFile);
                Log.i("mft", "fos="+fos);
                //创建byte数组  用于1KB写一次 写入 包里 刚才创建的 数据库 空文件
                byte[] buffer=new byte[1024];
                int count = 0;
                while((count = is.read(buffer))>0){
                    fos.write(buffer,0,count);
                }
                //最后关闭就可以了
                fos.flush();
                fos.close();
                is.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //\\
    }

相关推荐