android 数据库备份

来源:互联网 发布:淘宝内衣尺码怎么看 编辑:程序博客网 时间:2024/06/06 05:10
package com.n22.nci.tool;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.channels.FileChannel;import android.content.Context;import android.os.AsyncTask;import android.os.Environment;import android.util.Log;/** * 数据库备份还原类 *  */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();            }        }    }}


// 数据恢复private void dataRecover() {// TODO Auto-generated method stubnew BackupTask(panel).execute("restroeDatabase");}// 数据备份private void dataBackup() {// TODO Auto-generated method stubnew BackupTask(panel).execute("backupDatabase");}


0 0
原创粉丝点击