安卓数据存储与IO

1.SharedPreferences:用于存储程序的一些信息,这些信息格式较简单,例如配置信息,是否打开音效等,SharedPreferences保存信息基本使用键值对的方法,SharedPreferences接口主要负责读取应用程序的Preferences数据,有以下方法来访问SharedPreferences中的键值对:

boolean contains(Srtring key):判断是否包含特定key数据

Map<String,?>getAll():获取全部键值对

boolean getXxx(String key,xxx defValue):获取指定key对应 的value,如果value不存在就返回默认值,xxx可以是各种基本 类型的值,例如boolean,float

2.SharedPreferences.Editor用于向SharedPreferences写入数据,调用SharedPreferences.edit()方法可获取Editor对象

SharedPreferences.Editor clear():清空所有数据

SharedPreferences.Editor putXxx(String key,xxx value):存入指定key数据

SharedPreferences.Editor remove(String key):删除指定key对应数据项

boolean commit();Editor编辑完成后调用该方法提交修改

3.SharedPreferences本身是一个接口,程序无法创建实例,只能通过Context提供的getSharedPreferences(String name,int mode)方法获取实例,当此名的文件不存在时,如果有修改文件,就会自动创建一个,该方法第二个参数支持如下几个值:

Context.MODE_PRIVATE:只能被本应用程序读写

Context.MODE_WORLD_READABLE:能被其他应用程序读但不能写

Context.MODE_WORLD_WRITEABLE:能被其他应用程序读写

SharedPreferences以xml格式保存在DDMS中的File  Explorer中的/data/data/<package name>/shared_prefs文件夹下,根元素为<map>,每个子元素代表一个键值对,value是什么类型子元素标签就是什么,例如:

205419_j5VP_2896911.png

3.安卓支持以IO流的形式来访问手机存储器上的文件

Context提供如下方法来打开应用程序的数据文件夹里的文件IO流:

FileInputStream openFileInput(String name):打开应用程序的数据文件夹的name文件对应的输入流。

FileInputStream openFileOutput(String name,int mode):打开应用程序的数据文件夹的name文件对应的输出流。

MODE_PRIVATE:该文件只能被本应用程序读写

MODE_APPEND:以追加方式打开文件

MODE_WORLD_READABLE:能被其他应用程序读但不能写

MODE_WORLD_WRITEABLE:能被其他应用程序读写

Context还提供如下方法来访问应用程序的数据文件夹:

getDir(String name,int mode):在应用程序的数据文件夹写读取或创建name对应的子目录

File getFilesDir();获取应用程序的数据文件夹的绝对路径

String[] fileList():返回应用程序的数据文件夹下的全部文件。

deleteFile(String):删除应用程序的数据文件夹下的指定文件。

4.读写SD卡上的文件

调用Environment.getExternalStorageState()方法来判断手机是否插入SD卡,并判断应用程序是否具有读写SD卡的功能。可用如下代码:

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);如果已经插入SD卡并且具有读写SD卡的功能返回true;

调用Environment.getExternalStorageDirectory()方法获取外部存储器,SD卡的目录;

使用FileInputStream,FileOutputStream,FileReader,FileWriter读写SD卡文件;

读写SD卡上的文件有以下两点需要注意:

对于模拟器来说,通过mksdcard命令来创建虚拟存储卡;

需要在manifest文件中添加读写SD卡的权限:

在SD卡中写入数据的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在SD卡中创建与删除文件权限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

5.SQLite数据库

SQLite是一个嵌入式的数据库引擎,专门适用于在资源有限的设备上适量存储数据。SQLite数据库只是一个文件。安卓提供了SQLiteDatabase对象,此对象类似于JDBC编程中Connection和Statement的混合体,通过此对象可以管理、操作数据库。

205451_lwUx_2896911.png

205503_TlSe_2896911.png

insert方法插入的一行记录用ContentValues存放,ContentValues相当于Map集合,提供了put(String key,Xxx value);其中key为数据列的列名.

安卓中的Cursor类似于JDBC的ResultSet

205529_aUPy_2896911.png

一旦将记录指针移动到指定行之后,就可以调用Cursor的getXxx()方法获取该行的指定列的数据。

205553_bNPI_2896911.png

SQLiteOpenHelper类:此类是安卓提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新。

                                                           ----------------这些博客都是我之前在学习过程中自书中摘出的重点,以及一些前辈总结的经验,外加一些自己的感悟,如果有前辈看到,有不对的地方希望大家指出,非常感谢。

转载于:https://my.oschina.net/qinqinyuan/blog/743896

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值