
Android数据存储与IO.docx
5页实验九 Android 数据存储与 IO【实验内容】:1、 练习使用SharedPreferences 存储数据和读取数据2、 练习使用IO 流读写文件;3、 练习使用SQLiteDatabase、Cursor 和 SQLiteHelper 类等操作SQLite 数据库;【实验要求】1、 理解 Android 程序中数据存储有三种形式:SharedPreferences、文件和SQLite 数据库;2、 掌握使用 SharedPreferences 存储和读取数据的方法,并能在 DDMS 视图中查找到并下载相应数据文件;3、 掌握使用Java IO 流读写模拟器内存中的文件的方式;4、 掌握使用 SQLite 数据库进行数据读取的方法,理解应用程序中访问数据库涉及到的类,如SQLiteDatabase 类、Cursor 类和SQLiteHelper 类的作用;【实验步骤】:Android 程序中进行数据读写的方式主要有使用 SharedPreferences、IO 流、SQlite 数据库三种如果程序中有少量数据需要保存,且数据格式简单,都是普通的字符串、标量类型的值等,对于这种数据,可使用 SharedPreferences 进行保存。
保存类似于配置信息格式的数据数据主要是简单的key-value 值对SQLite 是一款开源的、轻量级、嵌入式的、关系型数据库在 2000 年由 D.Richard Hipp 发布 ,支持Java、.Net、PHP、Ruby、Python、Perl、C 等几乎所有的现代编程语言,并支持 Windows、Linux、Unix、Mac OS、Android、iOS 等几乎所有的主流操作系统平台SQLite 只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(、PDA 等)适量数据存取SQLiteDatabase 代表一个数据库, 一旦应用程序获得了代表指定数据库的SQLiteDatabase 对象,接下来就可以通过SQLiteDatabase 对象来管理、操作数据库,执行CRUD 操作 Cursor 类似于 JDBC 的 ResultSet,提供了一组方法来移动查询结果的记录指针,并提供一组getXxx()方法获取该行的指定列的数据SQLiteHelper 用于管理数据库的创建和版本更新一) 使用 SharedPreferences 保存和读取数据1、导入 Android 工程 ShardPreferencesTest,该工程实现向 SharedPreferences中写入、读取数据。
观察其目录结构2、运行程序,当用户单击“写入”按钮,将会获取系统当前时间,生成一个 100 以内的随机整数,并将它们存储起来当用户单击“读取”按钮时,将会显示上一次保存的信息3、查找SharedPreferences 信息储存的位置,选择菜单栏中的“View”->“Tool w Window ” ->Device File Explorer, 在 视 图 中 选 择 路 径data\data\cn.edu.tust.sharedpreferencestest\shared_prefs\crazyit.xml,将打开此XML 文件,在编辑器窗口中查看文件内容二) 读写内存卡上的数据1、导入工程FileTest3、运行程序,观察程序运行结果,并分析如何实现对的读内存文件的读写操作三) 访问 SQLite 数据库1、演示 Dict 项目,允许用户将自己不熟悉的单词添加到系统数据库中,当用户需要查询某个单词或解释时,只要在程序中输入相应的关键词,程序中相应的条目就会显示出来 1) 导入工程2) 运行程序,并执行操作,观察程序运行结果,并分析该项目中对SQLite 数据库的访问步骤与过程1、 SharedPreferences 如何实现数据的存储和读取?3) 分析项目中主要文件的作用。
思考题:它是 android.content 下的一个接口,官方对他的描述是这样的:用于访问和修改getSharedPreferences(String, int)返回偏好设置数据(preference data)的一个接口对于任何一组特殊的 preferences,所有的客户端共享一个此类单独的实例修改Preferences 必须通过一个 SharedPreferences.Editor 对象,以确保当他们提交存储数据的操作时, preference 值保持一致的状态最后再提交数据的时候必须使用commit()方法将数据完全写入它的优点在于会对一些特殊的字符进行分辨,达到准确读取的目的,传统上我们选择以特殊分隔符来分割要存储的数据,这样虽然会简单点,但是如果用户舌设置的数据同样包含这个分隔符,那么将造成读取失误三种方法获取SharedPreferences 对象:1. Context 类中的getSharedPreference(文件名, MODE_PRIVATE) 只有这一种模式可用和传入 0 效果相同2. Activity 类中的 getSharedPreference(MODE_PRIVATE) 只接受一个操作模式参数,以当前类名作为SharedPreferences 的文件名3. PreferenceManager 类中的 getDefaultSharedPreferences(Context) 静态方法,自动调用当前应用程序的报名作为前缀命名SharedPreferences 文件文件以.xml 格式存储,且有键值对应动态调用:SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).editor();editor.putSrirng/getString接口 Editor 是接口SharedPreferences 中的。
静态调用:SharedPreferences pref; SharedPrefereneces.Editor editor;Android 中如何实现对内存中文件的读取操作?...pref = PreferenceManager.getDefaultSharedPreferences(Context); editor = pref.edit();首先,介绍一遍adnroid 读取本地文件的方法:第一步肯定是先到清单文件添加:
/cache)static File getExternalStorageDirectory() 获得外部存储媒体目录/mnt/sdcard or/storage/sdcard0)static File getRootDirectory() 获得系统主目录(/system)另外,Environment.getDataDirectory().getParentFile(),可以回去内存的根目录:( / ) SD 卡:方法Environment.getExternalStoragePublicDirectory(DIRECTORY_ALARMS) 路径 /storage/sdcard0/Alarms Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM) 路径 /storage/sdcard0/DCIMEnvironment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS) 路径 /storage/sdcard0/Download Environment.getExternalStoragePublicDirectory(DIRECTORY_MOVIES)路径 /storage/sdcard0/Movies Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC) 路径 /storage/sdcard0/MusicEnvironment.getExternalStoragePublicDirectory(DIRECTORY_NOTIFICATIONS) 路径 /storage/sdcard0/Notifications Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES)路径 /storage/sdcard0/Pictures Environment.getExternalStoragePublicDirectory(DIRECTORY_PODCASTS) 路径 /storage/sdcard0/Podcasts Environment.getExternalStoragePublicDirectory(DIRECTORY_RINGTONES) 路径 /storage/sdcard0/Ringtones一般也就这几种,如果要指定文件夹也可以这样:File file = new File("/storage/sdcard1"); 直接定位到SD 卡File file = new File(Enviroment.getExternalStorageDirectory); 直接定位到内置内存SQLite 数据库的访问步骤是什么?大部分 android 的开发书籍中都会详细的说明如何利用代码创建sqlite 数据库,然后访问数据库。
可实际的应用中数据库往往数据库已经新建好,并且已经导入原始数据当然这些工作可以通过SQLiteOpenHelper.onCreate 方法在操作数据库前完成,但一定程度上会影响数据访问的速度本文提供两种办法将已建好的数据库上传至 /data/data/












