`

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 导出数据库到Excel表格功能

    7. **权限管理**:在Android 6.0及以上版本,你需要在运行时请求`WRITE_EXTERNAL_STORAGE`权限,以允许应用写入外部存储(如SD卡)。 8. **通知用户**:完成文件生成后,可以通过Intent启动文件浏览器或特定的Excel...

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

    在这个方法中,我们首先获取SD卡和内部存储的路径,然后创建文件输入和输出通道,将数据库从内部存储复制到SD卡上。记得处理可能抛出的异常,并向用户显示导出结果。 以上就是Android应用中使用SQLite进行登录注册...

    安卓Android源码——数据库文件写入SD卡.zip

    在安卓(Android)平台上,开发人员经常需要处理数据存储问题,包括将数据库文件保存到外部存储,也就是我们常说的SD卡。本资料“安卓Android源码——数据库文件写入SD卡.zip”提供了一个实例,展示了如何在Android...

    查看android的数据库文件db工具

    在Android开发中,数据库是存储和管理应用程序数据的重要手段,SQLite是Android系统默认使用的轻量级关系型数据库。本文将详细介绍如何使用一个名为SQLiteBrowser的工具来查看Android设备上的数据库文件(db)。 ...

    Android高级应用源码-自己做的一个android数据库复制到sdcard和一个简单的角标使用,demo很简陋.rar

    但是,由于内部存储空间有限,有时开发者会选择将数据库文件移动到外部存储(如SD卡)以释放空间或方便用户导出数据。这个示例代码可能会演示如何打开SQLite数据库,读取其内容,然后将其写入SD卡上的文件。涉及的...

    Android将数据导出为excel文件的方法

    2. **创建Excel文件**:在Android中,我们通常会在外部存储(SD卡)上创建Excel文件。首先,确保应用有写入外部存储的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />...

    android sqlite数据的备份与还原

    - 备份的基本思路是读取SQLite数据库中的所有数据,然后将其保存到外部存储(如SD卡)为一个SQLite的dump文件或者纯文本文件。这可以通过执行SQL的`sqlite3`命令来实现,比如`sqlite3 database.db .dump > backup....

    Android数据库转储

    4. **导出和分享**:转换后的文本可以保存到外部存储,如SD卡,或者通过邮件、云存储服务等方式分享。 在给定的文件列表中,可能包含了一个用于数据库转储的工具类。通常,此类会包含打开数据库连接、读取数据、...

    Android代码-自己做的一个android数据库复制到sdcard和一个简单的角标使用demo很简陋.zip

    这个压缩包中的资源提供了一个简单的示例,展示了如何将Android应用内的数据库复制到外部存储(SD卡)以及如何使用角标功能。下面我们将详细讨论这两个知识点。 首先,我们来看Android数据库的复制到SD卡的操作。在...

    安卓Excelwordppt文档读写相关-数据库导出excel文件.zip

    由于Android的安全模型,应用在读写外部存储(如SD卡)时需要请求`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限。在Android 6.0及以上版本,这些权限可能需要在运行时动态获取。 5. 对于程序无法运行的...

    微信导出聊天记录_android系统.pdf

    首先,定位到 SD 卡目录的微信文件夹,即 sdcard/Tencent/MicroMsg,进入后看到一个一串乱七八糟的数字和字母组合的文件夹,进入后看到 voice 文件夹,里面存储的就是微信的语音文件了,格式是 amr 的,用暴风就可...

    数据库建立在sdcard的个人日记2

    在这个场景中,"数据库建立在sdcard的个人日记2" 指的是在Android的外部存储(即SD卡)上创建了一个SQLite数据库,用于存储用户的个人日记条目。 首先,我们需要理解Android的存储机制。Android系统提供了内部存储...

    微信导出聊天记录_android系统分享.pdf

    语音记录导出是相对简单的,首先需要定位到 SD 卡目录的微信文件夹,即 sdcard/Tencent/MicroMsg,然后进入 voice 文件夹,里面存储的就是微信的语音文件了,格式是 amr 的,用暴风就可直接播放。用户可以直接将语音...

    安卓联系人数据库

    标题“安卓联系人数据库”暗示我们将探讨的是与安卓设备上的联系人存储相关的SQLite数据库。 `contacts.db`是这个话题的核心,它是一个SQLite数据库文件,存储了安卓用户的联系人信息。这些信息通常包括姓名、电话...

    查看sqlite数据库工具

    在Android开发环境中,通常需要通过ADB(Android Debug Bridge)将数据库文件从设备或模拟器中导出到本地。 3. **浏览数据**:连接成功后,SQLiteSpy会显示数据库中的所有表。点击表名,可以查看表的结构(列名、...

    Android记事本

    6. 文件存储:如果记事包含图片或其他媒体文件,可以考虑将它们作为二进制数据存储在SQLite的BLOB类型字段中,或者保存在外部存储(如SD卡),并只在数据库中存储文件路径。这取决于文件大小和应用场景。 7. 数据...

    有任何教程将所有android sms保存到SD卡中的文本文件中吗?

    标题中的问题涉及到的是如何在Android设备上将短信(SMS)数据导出到SD卡上的文本文件。这通常是为了备份或分析目的。以下是一些相关的Android编程知识点,特别是使用Java进行开发时需要注意的关键点: 1. **权限管理...

    基于android终端的考勤系统

    在Android环境中,可以使用SQLite数据库来存储考勤记录,包括员工信息、打卡时间等。数据导入导出可能需要CSV或Excel格式的支持,开发者需熟悉文件I/O操作及数据转换。此外,考虑到数据安全,系统还应实现数据加密和...

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

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

    inote记事工具android客户端

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

Global site tag (gtag.js) - Google Analytics