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";
    }

  • 相关阅读:
    计算几何中的精度问题
    codeforces上分计划
    洛谷P1962 斐波那契数列 (矩阵快速幂)
    codeforces 1474 E
    codeforces 1474 C
    codeforces 1467 E
    牛客练习赛76 F phi and phi (莫比乌斯反演)
    牛客练习赛76 D 魔物消灭计划 (斯坦纳树)
    牛客练习赛76 E 牛牛数数 (线性基)
    codeforces 1467 D. Sum of Paths (dp)
  • 原文地址:https://www.cnblogs.com/xgjblog/p/4121459.html
Copyright © 2011-2022 走看看