zoukankan      html  css  js  c++  java
  • android 数据库 备份还原

    详情参考  某android平板项目开发笔记---计划任务备份

    新建一个类继承 AsyncTask

    public class BackupTask extends AsyncTask<String, Void, Integer> {
        private static final String COMMAND_BACKUP = "backupDatabase";
        public static final String COMMAND_RESTORE = "restroeDatabase";
        private Context mContext;
    
        public BackupTask(Context context) {
            this.mContext = context;
        }
    
        @Override
        protected Integer doInBackground(String... params) {
            // TODO Auto-generated method stub
    // 获得正在使用的数据库路径,我的是 sdcard 目录下的 /dlion/db_dlion.db
         // 默认路径是 /data/data/(包名)/databases/*.db
    File dbFile = mContext.getDatabasePath(Environment .getExternalStorageDirectory().getAbsolutePath() + "/dlion/db_dlion.db"); File exportDir = new File(Environment.getExternalStorageDirectory(), "dlionBackup"); if (!exportDir.exists()) { exportDir.mkdirs(); } File backup = new File(exportDir, dbFile.getName()); String command = params[0]; if (command.equals(COMMAND_BACKUP)) { try { backup.createNewFile(); fileCopy(dbFile, backup); return Log.d("backup", "ok"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return Log.d("backup", "fail"); } } else if (command.equals(COMMAND_RESTORE)) { try { fileCopy(backup, dbFile); return Log.d("restore", "success"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return Log.d("restore", "fail"); } } else { return null; } } private void fileCopy(File dbFile, File backup) throws IOException { // TODO Auto-generated method stub FileChannel inChannel = new FileInputStream(dbFile).getChannel(); FileChannel outChannel = new FileOutputStream(backup).getChannel(); try { inChannel.transferTo(0, inChannel.size(), outChannel); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (inChannel != null) { inChannel.close(); } if (outChannel != null) { outChannel.close(); } } } }

    在 mainActivity 里异步加载备份、还原:

      // 数据恢复
        private void dataRecover() {
            // TODO Auto-generated method stub
            new BackupTask(this).execute("restroeDatabase");
        }
    
        // 数据备份
        private void dataBackup() {
            // TODO Auto-generated method stub
            new BackupTask(this).execute("backupDatabase");
        }
  • 相关阅读:
    go多种uuid生成方式
    go访问mysql基本语法
    go实现分布式唯一ID-snowflake(雪花算法)
    指定时间生成cron表达式
    zookeeper注册与发现
    短地址服务(二)
    java-redis
    短地址服务(一)
    cron表达式详解
    以后本blog所有内容全部转移,并在自建blog更新
  • 原文地址:https://www.cnblogs.com/oldfeel/p/2466121.html
Copyright © 2011-2022 走看看