关于存储的基本知识点理解

来源:互联网 发布:瞬联软件 编辑:程序博客网 时间:2024/06/07 13:39

知识点小分块:

--------------------------------------------------------------------------------------------------------
内部存储
1.直接IO存储(内置sdcard,无需操作权限)
2.偏好设置
3.静态存储(将一个文件直接放到项目目录)
4.SQLite存储
shared Preferences和SQLite数据库都是存储在内部存储在内部存储的内存中。
内部存储一般用Context进行获取和操作。
getFilsDir()获取app的存储空间。
File file=new File(Context.getFileDir(),filename);
if(!file.exeits){
 file.createNewFile();
}
获取通过openFileOutput的文件目录
File file =Context.getFileDir();
获取内部存储为dir1的目录。
File file=Context.getDir("dir1",fileName);

openFileoutput()获取存储在内部空间中的文件
特点:1.文件操作的时候只需要向函数提供文件名,根据文件名获取相应的文件,输入和输出流。
 2.不用向以往的写法,自己创建文件名,输入流,输出流。提供文件名就可以返回File对象和输入.输出流。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

外部存储(外置sdcard)
数据特点:
1.公有()
2.私有(/mnt/sdcard/Android/data)
相关对象:
1.Environment
2.Context
3.I/O

获得外部存储中公共目录
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
一些其他的公共目录
Environment.DIRECTORY_PICTURES  图片目录
Environment.DIRECTORY_DCIM  照片目录
Environment.DIRECTORY_DOWNLOADS 下载目录
Environment.DIRECTORY_MOVIES  电影目录
Environment.DIRECTORY_MUSIC  音乐目录
Environment.DIRECTORY_PINGTONES 铃声目录

操作外部存储时,1.应该先检查外部存储是否可用,  
2.利用StatFs类获取文件系统的状态,StatFs需要先实例化,然后再计算
Count  大小
Size   数量
free   自由的块数
available 可用的块数

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

偏好设置Shared Preferences                        
一种轻量级的存储方案,特别适用于保存软件配置的    
参数。例如:qq中是否允许陌生人添加自己为好友。   
Shared Preferences保存数据:     
其实质:采用XML文件存放数据。      
路径为:/data/data/<package name>/shared_prefs/  

四种模式:Context_MODE_PRIVATE 默认操作模式,代表文件是私有数据
   Context_MODE_APPEND  模式会检查文件是   
否存在,存在就追加,不存在就创建新文件
   MODE_WORLD_READABLE 文件可以被其他应    
用读取
  MODE_WORLD_WRTEABLE  文件可以被其他应     
用写入

------------------------------------------------------------------------------------------------------------------------------------------

SQLite数据库
1.是一款轻量型的关系型数据库系统,专为资源相对有限的移动设备开发的数据库系统
2.占用资源比较低
3.SQLite的每个数据库都是一个文件。
4.支持绝大部分的SQL92命令,及简单的事务功能
无论使用哪种方式访问数据库,流程都是一样的:
1.准备数据库
2.准备数据表
3.连接并打开数据库
4.执行SQL指令并获取结果
5.释放相关资源
数据库文件(*.db)会存储在/data/data/包名/database/文件夹下
使用Context对象的openOrCreateDataBase()方法创建或打开数据库,并建立与数据库的连接。

SQLiteDataBase类封装了对数据库进行访问的相关方法,譬如:数据库的增,删,改,查
此对象的获取:
Context对象的openOrCreateDataBase()方法的返回值
SQLiteOpenHelper对象的getReadableDataBase()和getWritableDataBase()的返回值。

insert()方法增加数据记录
参数说明:
1.String name;表明;
2.String nullColumnHack:空值字段名;
3.ContentValues values:数据记录的字段名与值得键值对。
返回Long类型数据,表示增加的记录的Id

ContentValues类:
以键值对(K-V)的形式封装了SQL语句中的字段名与值的对象,K为字段名,V为对应的值。ContentValues的本质是使用HashMap存储数据。

update()更新数据库记录
返回int类型数据,表示受影响的行数。

dalete()删除数据记录
返回int类型数据,表示受影响的行数。

query()查询数据记录
返回Cursor对象,内部封装了查询的数据。

Cursor接口:
定义了如何保存从数据库读取的结果的接口。
第一次使用Cursor时,应调用moveToXXX()系列的方法确定游标的位置,然后再进行相关操作。
Cursor使用完后,应该及时调用close()方法,已释放资源。


SQLiteOpenHelper类
Android提供的用于操作SQLite数据库的工具类,该类能方便的创建数据库,表,以及管理数据库版本。
是抽象类,使用时应该自定义类的子类。

继承其子类之外,还需重写父类中的2个抽象方法
public void onCreate(SQLiteDatabase db)仅当数据库不存在,需要创建数据库时,回调该方法。
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)仅当数据库需要更新是调用此方法。

注意:仅当调用SQLiteOpenHelper对象的getReadableDataBase()和getWritableDataBase()方法中的任意一个时,自定义SQLiteOpenHelper子类中的onCreate()或onUpgrade()才有了能执行。

 

 

0 0
原创粉丝点击