关于Android项目中打包资源文件到apk的总结

关于Android项目中打包资源文件到apk的总结

在开发中遇到了数据库方面的资源文件,想在打包的时候能够自动的装进apk中,并在运行的时候进行自动的复制文件到指定目录中,经过学习,现在总结如下,以便自己今后使用:

可分为两个方法

  • 检测数据库文件是否存在
  • 进行复制数据库操作

对数据库资源文件进行检查

public boolean checkDataBase() {
            String dbName = strings[i];
            SQLiteDatabase checkDB = null;
            try {
                String databaseFilename = DATABASE_PATH + dbName;
                checkDB = SQLiteDatabase.openDatabase(databaseFilename, null,
                        SQLiteDatabase.OPEN_READONLY);
            } catch (SQLiteException e) {
                //此处抛出相关异常
            }
            if (checkDB != null) {
            checkDB.close();
        }
        return checkDB != null ? true : false;
    }
在这段代码中获取指定的文件目录下,资源是否可读,若不能读取则返回null,随后对其值进行相关判断,以便是否进行相关资源的复制

对数据库资源文件进行复制到指定目录

代码如下
    private void copyDataBase() {
    private static String DATABASE_PATH = "/data/data/"apk包名"/databases/";//数据库在手机里的路径
        String[] strings = {dbFloor, dbDirection, dbSpecial};
        for (int i = 0; i < strings.length; i++) {
            //数据库名称集合
            String databaseFilenames = DATABASE_PATH + strings[i];
            File dir = new File(DATABASE_PATH);
            if (!dir.exists())//判断文件夹是否存在,不存在就新建一个
                dir.mkdir();
            FileOutputStream os = null;
            InputStream is = null;
            try {
                os = new FileOutputStream(databaseFilenames);//得到数据库文件的写入流
                //得到数据库文件的数据流
                is = getAssets().open(strings[i]);
                byte[] buffer = new byte[1024];
                int len = 0;
                while ((len = is.read(buffer)) != -1) {
                    os.write(buffer, 0, len);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    os.close();
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    此处主要是Io流相关的操作

你可能感兴趣的:(Android,入门)