3.2 拷贝数据库到系统目录

本文介绍了将数据库文件从assets目录拷贝到系统目录的方法,包括在SplashActivity启动时检查并复制数据库,以及使用ToastUtils进行UI更新。详细展示了如何读取assets中的数据库文件并写入系统目录,以及在遇到错误时的处理方式。
加载外部文件的几种常见做法:

1. 放在assets目录下
InputStream is = am.open("address.db"); 不会对该文件生成id

2. 放在res目录下的raw目录下.
InputStream is =getResources().openRawResource(R.raw.address);
编译这个文件生成id


3. javase做法
InputStream is = getClassLoader().getResourceAsStream("address.db");
                        

4. 联网下载.
地图应用. 高德导航. 1G 10G
mp3学英语
游戏应用的素材资源  联网下载



-----------------------------------------------------------------------------

1.将数据库文件放到assets目录下
2.在splashActivity创建时判断系统目录下是否有该文件,如果没有则复制到系统目录下
 
 
 
 
 
 
/**
 * 子线程中弹出土司跟新 ui
 * @author Administrator
 *
 */
public class ToastUtils {
      public static void showToastInThread( final Activity context, final String msg){
             //在子线程里面更新 ui
            context.runOnUiThread( new Runnable() {
                   @Override
                   public void run() {
                        Toast. makeText(context, msg, 0).show();
                        
                  }
            }); //线程的join
      }
}


---------------------------------------------------------


2.在splashActivity创建时判断系统目录下是否有该文件,如果没有则复制到系统目录下


 /**
   * 拷贝号码地址数据库到手机目录下
   */
    private void copyAddressDb() {
            File file= new File(getFilesDir(), "address.db");
      if(file.exists()&&file.length()>0){
          return
      }
      
      
      new Thread(){
        public void run() {
             //得到assets目录下address.db对应输入流
             AssetManager am = getAssets();
             try {
                        InputStream is = am.open( "address.db");
                        File file= new File(getFilesDir(), "address.db");
                        FileOutputStream  fos= new FileOutputStream(file);
                        
                         byte[]  buffer= new byte[1024];
                         int len=0;
                         while((len=is.read(buffer))!=-1){
                              fos.write(buffer, 0,len);
                        }
                        
                        fos.close();
                        is.close();
                        
                         //在子线程中跟新 ui
                        ToastUtils. showToastInThread(SplashActivity.this,"拷贝数据库成功...");
                        
                  } catch (IOException e) {
                        e.printStackTrace();
                         //在子线程中跟新 ui
                        ToastUtils. showToastInThread(SplashActivity.this,"拷贝数据库失败...");
                        
                  }
             
             
        };
            
  }.start();
            
      
      }







 
 
 
 
 
 
 
 
 
 
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值