关于存储的基本知识点理解
来源:互联网 发布:瞬联软件 编辑:程序博客网 时间: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()才有了能执行。
- 关于存储的基本知识点理解
- 关于数据库的基本知识点
- 多方位理解java方法的基本知识点
- 一些关于Java的琐碎基本知识点
- JS关于数组的基本知识点
- 关于maven的基本理解
- 有关网络协议融合、存储关键知识点的一些理解
- java中IO的基本知识点及其个人理解
- Servlet学习笔记1-基本知识点,和servlet的理解
- 关于String存储机制的理解
- 关于C中内存存储的理解
- C中关于存储类的理解
- 设计模式-关于模式的一些很基本的知识点
- 关于DNS基本流程的理解
- 关于JS函数的一些基本理解
- 关于oracle的一些基本知识点和操作
- 关于ARC需要了解的一些基本知识点
- 关于ARC需要了解的一些基本知识点
- INSERT INTO t_inertupdate (a,c) VALUES(15,a*2);
- HttpUrlConnection post和get请求
- android布局相关属性
- Ubuntu 修改文件名
- CSS选择器的区别
- 关于存储的基本知识点理解
- Linux(Ubuntu)下如何安装JDK
- Error Code: 1235. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
- 获取系统当前时间
- 华为code中的字符串通配符匹配
- Ubuntu Apache部署多个web工程
- 一个直接插入排序算法程序
- Android fill_parent、wrap_content和match_parent的区别
- Dubbox之编译