`

android如何导出数据库到SD卡

 
阅读更多
package com.digitnexus.scv.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.res.AssetManager;
import android.os.Environment;
import android.util.Log;

import com.digitnexus.core.util.sdcard.SDCardUtil;

public class ImportDBFile {

   	private final String TAG = ImportDBFile.class.getSimpleName() ; 
	private final int BUFFER_SIZE = 40*1024;
	public String DB_NAME = "scv.db"; // save db file name
	public String PACKAGE_NAME = null;
	public String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() ;
	
	public final String Package_path = Environment.getExternalStorageState() ;

	private Context context;
	
	
	public ImportDBFile(){}

	public ImportDBFile(Context context, String dbName) {
		this.context = context;
		DB_NAME = dbName ; 
	}

	public void openDatabase() {
		ApplicationInfo applicationInfo = context.getApplicationInfo() ;
		PACKAGE_NAME = applicationInfo.packageName ;
		copyDataBaseToAPP(DB_PATH +"/"+ PACKAGE_NAME +"/databases/" + DB_NAME);
	}

	private void copyDataBaseToAPP(String dbfile) {
		try {
		   	// if the db file does not exist, first import the db file
			if (!(new File(dbfile).exists())) {
				File file = new File(dbfile.substring(0, dbfile.lastIndexOf("/"))) ;
				file.mkdirs();
				System.out.println("Create database directory successed!");
				file.createNewFile() ;
				AssetManager am =  null ;    
				am = this.context.getAssets();    
				InputStream is = am.open(DB_NAME);    // to import the db file
				FileOutputStream fos = new FileOutputStream(dbfile);
				byte[] buffer = new byte[BUFFER_SIZE];
				int count = 0;
				while ((count = is.read(buffer)) > 0) {
					fos.write(buffer, 0, count);
				}
				fos.close();
				is.close();
				Log.i(TAG, "import " + DB_NAME + "successful!") ;
			}
		} catch (FileNotFoundException e) {
			Log.e("Database", "File not found");
			e.printStackTrace();
		} catch (IOException e) {
			Log.e("Database", "IO exception");
			e.printStackTrace();
		}
	}
	
	public void exportDBToSDCard(){
		ApplicationInfo applicationInfo = context.getApplicationInfo() ;
		PACKAGE_NAME = applicationInfo.packageName ;
		String path = DB_PATH +"/"+ PACKAGE_NAME +"/databases/" + DB_NAME ;
		try {
			FileInputStream fis = new FileInputStream(new File(path)) ;
			System.out.println(SDCardUtil.getSDCardPath()+"/"+DB_NAME);
			System.out.println(Environment.getExternalStorageDirectory()
					.getAbsolutePath()); ;
			FileOutputStream fos = new FileOutputStream(SDCardUtil.getSDCardPath()+"/"+DB_NAME) ;
			byte[] buffer = new byte[BUFFER_SIZE];
			int count = 0;
			while ((count = fis.read(buffer)) > 0) {
				fos.write(buffer, 0, count);
			}
			fos.close();
			fis.close();
			System.out.println("import to sdcard success!");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
}
 
1
0
分享到:
评论

相关推荐

    Android 登录注册 数据库SQLite 验证,导出数据库到SD卡

    Android 登录注册 数据库SQLite 验证,导出数据库到SD卡 Android 登录注册 数据库SQLite 验证,导出数据库到SD卡

    InventoryManagement:此库存管理 Android 移动应用程序旨在帮助主要购买库存 (Sarees) 并维持其费用。 为我的姐夫创建了这个应用程序,他在手摇丝绸纱丽 - 制造商、供应商和出口商。 它目前不与其他服务或软件集成,但您可以将数据库导出到存储卡

    库存管理 此库存管理 Android 移动应用程序旨在帮助主要购买库存 (Sarees) 并维持其费用。 为我的姐夫创建了这个应用程序,他在手摇丝绸纱丽 - 制造... 它目前不与其他服务或软件集成,但您可以将数据库导出到存储卡。

    inote记事工具android客户端

    4. 导出(导出txt文件至SD卡) 5. 分享 涉及到的开发点(部分): inote新手开发 1. 创建的Activity要添加到AndroidManifest.xml文件 2. 可以使用AlertDialog实现弹出窗口 3. 输入框的提示文字(没有内容时展现),...

    Android开发案例驱动教程 配套代码

    10.3.1 访问SD卡 207 10.3.2 访问应用文件目录 212 10.4 SQLite数据库 216 10.4.1 SQLite数据类型 216 10.4.2 Android平台下管理SQLite数据库 216 10.5 编写访问SQLite数据库组件 220 10.5.1 DBHelper类 220 ...

    精通ANDROID 3(中文版)1/2

    19.3.7 为整个SD卡触发MediaScanner  19.3.8 参考资料  19.4 小结  第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另...

    Android实现多功能日记本,优秀毕业设计源代码,小白必看!

    对相册、相机和SD卡的访问;对照片的裁剪和预览;日历和日期显示器的翻页显示;颜色选择器的高级优化;自定义系统的主题样式;添加和取消密码锁;允许改变主题和备忘录的排列顺序;导入和导出数据文件,用来备份;...

    android-utils:包含大多数Android实用程序类

    Android工具类库 囊括了一大部分Android应用开发过程当中常用的工具类。工具类来源整理自网络和自己编写。 所有的工具类简介(a-z): ... SD卡操作工具类 应用配置工具类 外壳工具类 快捷方式工具类 单例模

    精通Android 3 (中文版)2/2

    19.3.7 为整个SD卡触发MediaScanner  19.3.8 参考资料  19.4 小结  第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另...

    NetworkDiscovery:测试网络发现

    以 XML 格式将结果导出到您的 SD 卡 快速访问 Wifi 设置 自适应扫描速率(慢启动,然后自适应网络延迟) 开源,可在 建造 git clone https://github.com/rorist/android-network-discovery.git cd android-network...

    自己收集整理的一些常用的工具类

    AnimationUtils 动画工具类 AppUtils APP相关信息工具类 ...SDCardUtils SD卡工具箱 Symbols 常用符号 WebViewManager WebView管理器,提供常用设置 原地址:https://github.com/l123456789jy/Lazy

    密码管家 - 最强大的密码管理助手(2012年2月2日重新上传v2.5.0)

    实际上密码管家自身只请求了两个权限,开机启动权限(开机时自动运行)和存储卡读写权限(导出和导入),别的权限皆为嵌入的广告SDK所要求使用的。 【特别建议】 1. 无论是新用户还是老用户,请务必在成功安装了新版的...

    Secret_Space_Encryptor_Pro_v2.2.apk

    答:Android 4.4不允许任何应用程序对外部SD卡的写访问权,但预安装的应用程序(由设备或系统映像制造商预先安装)除外。我们对此问题无能为力。唯一的解决方案是植根设备并更改权限(例如:https : //goo.gl/Ksk0Bm...

    android-mini-crm

    它使用本地设备Sqlite 数据库来存储数据。 即将推出的功能 跨多个设备的云备份和同步 将图片附加到产品和联系人 从设备电话簿导入联系人 将订单/投标导出为 pdf 用于快速输入小额交易的收银机功能,包括条码扫描仪...

    Titanium_Backup_Pro_Donate_v8.4.0.2.apk

    Titanium Backup是Android上最强大的备份工具,其次。 ☆需要ROOT,Android 1.5...[✔] CSV导出任何应用程序数据库(电子邮件或Google文档)。 [✔]将应用程序数据转换为快速WAL格式或从中转换为数据。 [✔]更多!

    Secret Space Encryptor Pro 2.0.apk

    答:除了预装的应用程序(由设备或系统映像制造商预装)之外,Android 4.4不允许将外部SD卡写入任何应用程序。我们对此问题无能为力。唯一的解决方案是根设备并更改权限(例如:https://goo.gl/Ksk0Bm)或升级到...

    星月金锁 密码管理 0.999

    星月金锁并无需访问手机的任何权限,除了备份数据需要读写SD卡,它不会联网,也不会访问手机上的任何隐私数据。 视频演示:http://www.tudou.com/programs/view/_JFqVlmCEDM 官网: http://g.zijinshi.org 更新内容...

    网狐荣耀版开发使用常见问题解答

    十五、在网狐荣耀版添加房卡游戏时,经常有网友遇到进房卡房间弹出到大厅登录界面 这个问题经常有网友咨询,经过调试,最后确定是开发库不配套的问题。经过更新,重新生成开发库,问题解决。 十六、网狐荣耀版...

    暂时的:(已存档的)一个渐进式Web应用程序,用于在遇到单词和翻译时写下它们

    短暂的 :leaf_fluttering_in_wind: :warning: 此版本的临时版本已弃用并存档。 您可以在新的仓库在和新的应用程序 ... 笔记可以同步到远程数据库,也可以跨设备同步 导出到Anki卡座 开发:前端 Webpack用于捆绑前端的

    密码管家 - 最强大的密码管理助手

    实际上密码管家自身只请求了两个权限,开机启动权限(开机时自动运行)和存储卡读写权限(导出和导入),别的权限皆为嵌入的广告SDK所要求使用的。 【特别建议】 1. 无论是新用户还是老用户,请务必在成功安装了新版的...

    JAVA上百实例源码以及开源项目源代码

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

Global site tag (gtag.js) - Google Analytics