• 拷贝释放数据库文件到系统目录四种方式并在主线程显示土司


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    // 拷贝释放数据库文件到系统目录.
    new Thread() {
    public void run() {
    try {

    File file = new File(getFilesDir(), "address.db");
    if (file.exists() && file.length() > 0) {
    Log.i(TAG, "数据库已经存在无需拷贝");
    } else {
    InputStream is = getAssets().open("address.db");
    // data/data/包名/files/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();
    showToastInMainThread("拷贝数据库成功");
    }
    } catch (Exception e) {
    e.printStackTrace();
    showToastInMainThread("拷贝数据库失败");
    }

    };
    }.start();

    }

    /**
    * 在主线程显示土司
    *
    * @param text
    */
    public void showToastInMainThread(final String text) {
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    Toast.makeText(getApplicationContext(), text, 1).show();

    }
    });
    }

    资源文件使用的几种常见办法:
    1.把资源放在SD卡上. 程序初始化的时候 连接服务器 把资源文件下载到SD卡上.(地图应用, mp3学英语)(中国常用)

    2.javase类加载器 把address.db文件放置在src目录下,加载的时候自动加载到classes目录下
    InputStream is = getClassLoader().getResourceAsStream("address.db");
    //拷贝文件 释放到系统/data/data/包名/files/address.db


    3.资源目录 raw目录
    InputStream is = getResources().openRawResource(R.raw.address);
    //拷贝文件 释放到系统/data/data/包名/files/address.db

    4.资产目录(案例用)
    InputStream is = getAssets().open("address.db");
    //拷贝文件 释放到系统/data/data/包名/files/address.db

  • 相关阅读:
    apiCloud授权绑定第三方账号,微信、QQ、微博。
    Java中JTree的简单案例
    Java中的Swing键盘绑定案例
    Beej网络socket编程指南
    IP处理函数inet_aton()和inet_ntoa(),inet_pton,inet_ntop
    Hadoop开发环境搭建
    Lua和Javascript差异对比
    Lua table pair和ipair区别
    lua中求table长度
    lua metatable和metamethod元表和元方法
  • 原文地址:https://www.cnblogs.com/bravolove/p/4988128.html
Copyright © 2020-2023  润新知