Android数据存储与IO

1.SharePreferences
Preference数组主要是key-value数据对
SharePreferences接口主要负责读应用程序的Preference数据,通过如下方法访问key-value数据
boolean contains(String key)
abstract Map<String,?> getAll() 获取SharedPreferences数据里面的全部的key-value对
boolean getXxx(String key,xxx defValue) 获取指定的key对应的Value,如果key不存在,则返回默认的defValue

SharedPerferences接口本身没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。其提供了如下方法向SharedPreferences写入数据
SharedPreferences.Editor  clear()  清空SharedPreferences里所有的数据
SharedPreferences.Editor  putXxx(String key,xxx value)向SharedPreferences存入指定key对应的数据
SharedPreferences.Editor  remove(String key) 删除SharedPreferences里指定key对应的数据
boolean commit()  当Editor编辑完成后,调用该方法提交


只能通过getSharedPreferences(String name,int mode)方法来获取SharedPreferences实例
该方法的第二个参数支持如下几个值
Context.MODE_PRIVATE指定该SharedPreferences的数据只能被本应用程序读写
Context.MODE_WORLD_READABLE指定该SharedPreferences可以被其它应用程序读
Context.MODE_WORLD_WRITEABLE    指定该SharedPreferences的数据可以被其它应用程序写


2.File存储
1.openFileOutput和openFileInput
Context提供了如下两个方法来打开应用程序的数据文件夹里面的文件IO流
FileInputStream  openFileInput(String name)打开应用程序的数据文件夹下的name文件对应的输入流
FileOutputStream openFileOutput(String name,int mode)    打开应用程序的数据文件夹下的name文件对应的输出流,通常结合PrintStream使用
MODE_PRIVATE   该文件只能被当前程序读写
MODE_APPEND    以追加的方式打开文件,应用程序可以向该文件追加内容
MODE_WORLD_READABLE该文件内容可以被其它程序读取
MODE_WORLD_WRITEABLE 该文件的内容可以被其它程序写



除此之外Context还提供了如下方法访问数据文件夹
getDir(String name,int mode)    在应用程序的数据文件夹下创建或获取name对应的子目录
File getFilesDir()      获取应用程序的数据文件夹的绝对路径
String[] fileList()     返回应用程序的数据文件夹下的全部文件
deleteFile(String)      删除应用程序的数据文件夹下的指定文件


3.读写SD卡上的文件
1.调用Environment的getExternalStorageState()方法判断手机上是否插入SD卡,并且应用程序具有读写SD卡的权限
//如果手机已经插入SD卡,并具有权限则返回true
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
2.调用Environment的getExternalStorageDirectory()方法获取外部存储器,也就是SD卡的目录
3.使用FileInputStream和FileOutputStream ,FielReader或FileWriter来读写SD卡里的文件
必须在AnddroidManifest.xml中添加权限
<!--在sd卡中创建与删除文件权限-->
<user-permission andriod:name="android:permission.MOUNT_UNMOUNT_FILESYSTEMS">
<!--向SD卡写入数据权限-->
<uses-permission android:name="android:permission.WRITE_EXTERNAL_STORAGE">


4.SQLite数据库
SQLiteDatabase简介
SQLiteDatabase提供了如下静态方法打开一个文件对应的数据库
static  SQLiteDatabase  openDatabase(String path,SQLiteDatabase.CursorFactory  factory ,int flags)打开path路径下的SQLite数据库
static  SQLiteDatabase  openOrCreateDatabase(File file,SQLiteDatabase.CursorFactory factory)
static  SQLiteDatabase  openOrCreateDatabse(String path,SQLiteDatabase.CursorFactory factory)

SQLiteDatabase可以看做是Connection和Statement的混合体,而Cursor可以看做是ResultSet


1.创建数据库和表
SQLiteDatabase.openOrCreateDatabase("/mnt/db/temp.db3",null);
调用execSQL()方法可执行任意的SQL语句
  2.使用SQL语句操作

使用SQLiteDatabase进行数据库操作的步骤如下
1.获取SQLiteDatabase对象
2.调用SQLiteDatabase的方法执行SQL语句
3.调用SQL语句的执行结果,比如用SimpleCursorAdapter封装Cursor
4.关闭SQLiteDatabase,回收资源

SQLiteOpenHelper类
实际应用通常继承SQLiteOpenHelper,通过子类的getReadableDatabase().getWritableDatabase()方法打开数据库
提供两个方法onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)用于数据库的创建和版本更新,子类通常需要覆盖两个方法

3.手势(Gesture)
GestureDetector类
创建GestureDetector时需要传入一个GestureDetector.OnGestureListener实例
GestureDetector.OnGestureListener里面包含的事件处理方法如下
boolean onDown(MotinEvent e)    当触碰事件按下时触发该方法
boolean onFling(MotionEvent e1,MotionEvent e2,float velocity X,float velocity Y)  其中velocity x,velocity y 是代表动作在横向和纵向的速度
abstract void onLongPress(MotionEvent e)当手指在屏幕上长按时触发此方法
boolean  onScroll(MotionEvent e1,MotinEvent e2,float distanceX,float distanceY)   当用户手指在屏幕上滚动时触发该方法
void  onShowPress(MotionEvent e)   当用户手指按下,未移动和松开时触发该方法
boolean  onStringTapUp(MotionEvent e)   用户轻击触发

4.自动朗读
TextToSpeech(Context context,TextToSpeech.OnInitListener listener)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值