public class DbManager { private static final int BUFFER_SIZE = 2046; public static final String DB_NAME = "school_out.db"; public static final String DB_PATH = "/data" + android.os.Environment.getDataDirectory().getAbsolutePath() + "包名" + "/"; public static final String DB_FILE = DB_PATH + DB_NAME; private Context mContext; private SQLiteDatabase database; public DbManager(Context context) { super(); this.mContext = context; } public void openDatabase() { closeDatebase(); database = openDateBase(); } /** * * <b>功能名:</b> 打开数据库 <br/> * <b>功能描述:</b> <br/> * <b>创建时间:</b> 2013-8-6 <br/> * <b>修改时间:</b> 2013-8-6 <br/> * * @return */ public SQLiteDatabase openDateBase() { File file = new File(DB_FILE); // 如果文件不存在,将 raw 下的db文件复制到 data/data下面 if (!file.exists()) { File filePath = new File(DB_PATH); if(!file.exists()) filePath.mkdirs(); // // 打开raw中得数据库文件,获得stream流 InputStream stream = this.mContext.getResources().openRawResource( R.raw.school_out); try { // 将获取到的stream 流写入道data中 FileOutputStream outputStream = new FileOutputStream(DB_FILE); byte[] buffer = new byte[BUFFER_SIZE]; int count = 0; while ((count = stream.read(buffer)) > 0) { outputStream.write(buffer, 0, count); } outputStream.close(); stream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(DB_FILE, null); return database; } public SchoolBean getBean(String schoolName) { SchoolBean bean = null; Cursor cursor = this.database.rawQuery("SELECT * FROM school_out where name = '" + schoolName + "'", null); try { int index = cursor.getCount(); System.out.println(index); if(index != 0){ cursor.moveToFirst(); bean = new SchoolBean(); bean.setId(cursor.getString(cursor.getColumnIndex("sid"))); bean.setSchoolName(cursor.getString(cursor.getColumnIndex("name"))); } } catch (Exception e) { e.printStackTrace(); }finally { cursor.close(); } return bean; } /** * 获取学校数据(拉取10 条) * */ public ArrayList<SchoolBean> getSchoolList(String where) { ArrayList<SchoolBean> nameList = new ArrayList<SchoolBean>(); Cursor cursor = this.database.rawQuery( "SELECT * FROM school_out where name like '%" + where + "%' limit 0, 20", null); try { for (int i = 0; i < cursor.getCount(); i++) { cursor.moveToPosition(i); SchoolBean bean = new SchoolBean(); bean.setId(cursor.getString(cursor.getColumnIndex("sid"))); bean.setSchoolName(cursor.getString(cursor.getColumnIndex("name"))); nameList.add(bean); } } catch (Exception e) { e.printStackTrace(); }finally{ cursor.close(); } return nameList; } // public SchoolBean[] getSchoolData(String where) // { // ArrayList<SchoolBean> lists = getSchoolList(where); // return (SchoolBean[]) lists.toArray(); // } /** * * <b>功能名:</b> 关闭数据库 <br/> * <b>功能描述:</b> <br/> * <b>创建时间:</b> 2013-8-6 <br/> * <b>修改时间:</b> 2013-8-6 <br/> */ public void closeDatebase() { if (database != null && database.isOpen()) { database.close(); } } }
相关推荐
`copyDatabase()`方法通常会打开`assets`目录的输入流,读取数据库文件,然后写入到目标路径。需要注意的是,如果数据库文件超过1MB,可能需要分块复制,因为Android的AssetManager不支持一次性读取大文件。这时可以...
1. **复制数据库文件**:首先,你需要将预置的SQLite数据库文件放置到应用的资源目录,比如`assets`或`raw`目录。这使得应用在安装时可以访问到数据库文件。 2. **创建SQLiteOpenHelper子类**:尽管我们不打算使用`...
在Android开发中,`assets`目录是一个特殊的地方,用于存储应用程序需要但不通过SQLite数据库或资源文件系统访问的非结构化数据。这个目录下的文件在编译时会被原封不动地复制到APK中,因此在运行时可以使用`...
本篇将详细介绍如何将位于`res/raw`目录下的SQLite数据库文件(如`dictionary.db`)导入到应用程序的`database`目录下。 首先,`res/raw`目录是一个特殊的地方,它包含的应用程序资源不会被APK的压缩过程所压缩。...
- 基于Android中读取assets目录下a.txt文件并进行解析的深入分析 - Android操作存放在assets文件夹下SQLite数据库的方法 - Android编程读取Assets所有文件并存入sdcard的方法 - Android加载assets中的资源文件实例...
如果不存在,则尝试从应用的`raw`资源中读取数据库文件,并将其复制到应用的数据目录下。这里需要注意的是,为了避免权限问题,可以考虑使用`Context.MODE_PRIVATE`而不是`Context.MODE_WORLD_READABLE`来打开文件...
在这个例子中,我们可能会使用FileInputStream来读取本地文件,或者使用AssetManager.open()方法来读取assets目录下的文件。文件内容可能是一个简单的文本文件,每行一个单词,或者是一个结构化的数据文件,需要解析...
对于Excel文件,我们可以将其放在assets或raw目录下,这两个目录允许我们存放任意类型的文件,且在运行时可以通过AssetManager或Resources类进行访问。 1. **读取Excel文件** - **使用AssetManager**:当Excel文件...
Android提供了两个位置可以存放不会被压缩的文件:`res/raw` 和 `assets` 目录。在这个例子中,我们将数据库文件 `test.db` 放入 `res/raw` 文件夹。这样做是因为这些文件在构建APK时保持原样,不会经过任何处理,...
4. **创建数据库目录**:首先,需要确保数据库所在的目录存在。如果不存在,通过`mkdir()`方法创建目录。这里的`rootDirectory`是数据库路径的父目录。 5. **复制数据库文件**:如果目标路径下没有.db文件,代码会...
此外,源码中可能还涉及到文件I/O操作,例如读取存储在assets或raw目录中的电子书内容。Android提供了FileInputStream和FileOutputStream类来处理文件的读写,同时也支持使用ParcelFileDescriptor进行大文件的流式...
如果不存在,我们从应用的资源(通常是assets或res/raw文件夹)中复制预置的数据库文件到SD卡。然后,使用`SQLiteOpenHelper`的`openOrCreateDatabase()`方法打开或创建数据库。 4. 使用数据库: 一旦数据库被成功...
在Android应用中直接使用这个黄历数据库,首先需要将.db文件添加到项目的assets或res/raw目录下。然后,通过SQLiteOpenHelper的子类来操作数据库,实现数据库的打开、读取、写入等操作。以下是一些关键步骤: 1. **...
5. ** assets** 或 **raw** 目录:可能包含日历数据或其他静态文件。 6. **数据库文件**:如果应用使用SQLite,可能会有数据库相关的`.db`文件。 7. **测试代码**:可能包含单元测试或UI测试代码,以验证功能的正确...
2. **读取静态文件**:Android 应用可以访问`res/raw`和`assets`目录下的文件。对于`raw`文件,可以通过`getResources().openRawResource()`方法获取`InputStream`,然后利用`InputStreamReader`和`BufferedReader`...
5. **数据存储**:电子书籍的内容可能存储在SQLite数据库中,或者以JSON格式加载于 assets 或 raw 目录下。源码会展示如何读取和显示这些数据。 6. **UI组件**:源码可能使用了TextView、ImageView、RecyclerView等...
原始资源位于`res/raw`目录,而`assets`目录下的文件则需通过`AssetManager`实例来访问。 - **写入**:通常,我们不建议直接修改资源文件,因为它们在运行时是只读的。如果需要持久化存储,应考虑使用SQLite数据库...
1. SQLite:轻量级数据库,支持基本的 SQL 语法, Android 提供了 SQLiteDatabase 类封装了一些操作数据库的 API。 2. SharedPreference:一种常用的数据存储方式,实际是一个 xml 文件,常用于存储较简单的参数...
10. **Asset文件读取**:应用的assets目录可存放非结构化的资源文件,如配置文件或数据库,通过`AssetManager`进行读取。 以上知识点涵盖了Android应用中读取数据的主要方式,但具体到"citest_android"项目,可能只...
文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台...