用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - android代码库

Android数据库备份类

2012-11-30 作者: 小蜜锋举报

[android]代码库

/**
 * Android数据库备份类
 */
public class BackupTask extends AsyncTask<String, Void, Integer> implements
		CompletionListener {

	// 定义常量
	public static final int BACKUP_SUCCESS = 1;
	public static final int RESTORE_SUCCESS = 2;
	public static final int BACKUP_ERROR = 3;
	public static final int RESTORE_NOFLEERROR = 4;
	public 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) {
		// 1,获得数据库路径
		File dbFile = mContext.getDatabasePath("xxx.db");
		// 2,创建保存的数据库的路径
		File exportDir = new File(Environment.getExternalStorageDirectory(),
				"shopBackup");
		if (!exportDir.exists()) {
			exportDir.mkdirs();
		}
		File backup = new File(exportDir, dbFile.getName());
		// 3,检查操作
		String command = params[0];
		if (command.equals(COMMAND_BACKUP)) {
			// 复制文件
			try {
				backup.createNewFile();
				fileCopy(dbFile, backup);
				return BACKUP_SUCCESS;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return BACKUP_ERROR;
			}
		} else {
			return BACKUP_ERROR;
		}

	}

	private void fileCopy(File source, File dest) throws IOException {
		FileChannel inChannel = new FileInputStream(source).getChannel();
		FileChannel outChannel = new FileOutputStream(dest).getChannel();
		// FileInputStream fis = new FileInputStream(dbFile);
		// FileOutputStream fos = new FileOutputStream(backup);
		// byte buffer[] = new byte[4 * 1024];
		// while(fis.read(buffer) != -1){
		// fos.write(buffer);
		// }
		// fos.flush();
		//
		long size = inChannel.size();
		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();
			}
		}
	}

	@Override
	protected void onPostExecute(Integer result) {
		// TODO Auto-generated method stub
		super.onPostExecute(result);
		switch (result) {
		case BACKUP_SUCCESS:
			onBackupComplete();
			break;

		default:
			break;
		}
	}

	@Override
	public void onBackupComplete() {

		Log.d("backup", "ok");

	}

	@Override
	public void onRestoreComplete() {
		// TODO Auto-generated method stub

	}

	@Override
	public void onError(int errorCode) {
		// TODO Auto-generated method stub

	}

}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...