zoukankan      html  css  js  c++  java
  • 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布

     

    可以将dictionary.db文件复制到Eclipse Android工程中的res aw目录中,如图1所示。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。
    使 用openDatabase方法来打开数据库文件,如果该文件不存在,系统会自动创建/sdcard/dictionary目录,并将res aw目录 中的 dictionary.db文件复制到/sdcard/dictionary目录中。openDatabase方法的实现代码如下:


    代码 
        private SQLiteDatabase openDatabase()
        {
            try
            {
                // 获得dictionary.db文件的绝对路径
                String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
                File dir = new File(DATABASE_PATH);
                // 如果/sdcard/dictionary目录中存在,创建这个目录
                if (!dir.exists())
                    dir.mkdir();
                // 如果在/sdcard/dictionary目录中不存在
                // dictionary.db文件,则从res aw目录中复制这个文件到
                // SD卡的目录(/sdcard/dictionary)
                if (!(new File(databaseFilename)).exists())
                {
                    // 获得封装dictionary.db文件的InputStream对象
                    InputStream is = getResources().openRawResource(R.raw.dictionary);
                    FileOutputStream fos = new FileOutputStream(databaseFilename);
                    byte[] buffer = new byte[8192];
                    int count = 0;
                    // 开始复制dictionary.db文件
                    while ((count = is.read(buffer)) > 0)
                    {
                        fos.write(buffer, 0, count);
                    }

                    fos.close();
                    is.close();
                }
                // 打开/sdcard/dictionary目录中的dictionary.db文件
                SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
                        databaseFilename, null);
                return database;
            }
            catch (Exception e)
            {
            }
            return null;
        }





         在openDatabase方法中使用了几个常量,这些常量是在程序的主类(Main)中定义的,代码如下:



    代码 
    public class Main extends Activity implements OnClickListener, TextWatcher
    {
        private final String DATABASE_PATH = android.os.Environment
                .getExternalStorageDirectory().getAbsolutePath()
                + "/dictionary";
        private final String DATABASE_FILENAME = "dictionary.db";
    }

  • 相关阅读:
    沉淀再出发:在python3中导入自定义的包
    沉淀再出发:java中的equals()辨析
    沉淀再出发:web服务器和应用服务器之间的区别和联系
    沉淀再出发:jetty的架构和本质
    沉淀再出发:dubbo的基本原理和应用实例
    沉淀再出发:OpenStack初探
    沉淀再出发:Spring的架构理解
    沉淀再出发:关于IntelliJ IDEA使用的一些总结
    沉淀再出发:spring boot的理解
    沉淀再出发:Bean,JavaBean,POJO,VO,PO,EJB等名词的异同
  • 原文地址:https://www.cnblogs.com/xgjblog/p/4121459.html
Copyright © 2011-2022 走看看