存储的基本知识点理解

日期: 2018-10-09
浏览次数: 79


存储的基本知识点理解

知识点小分块:

--------------------------------------------------------------------------------------------------------
内部存储
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//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()才有了能执行。

--------------------- 本文来自 颂芃 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/songchen1314af/article/details/51381893?utm_source=copy 





相关推荐 / 热点新闻
2020 - 09 - 01
点击次数: 512
两情若是长久时,又岂在朝朝暮暮”,这是众人熟知的诗句,出自宋代大诗人秦观的《鹊桥仙·纤云弄巧》,古时候七夕只能望月寄相思,书信是表达爱意的方式,车马是传递信息的唯一途径。而在我们飞速发展的时代,相思,相见,想诉,却是那么的触手可及。你不用每早快马加鞭前往朝廷议政,你不用研磨执笔书写您的未来,所有的一切全在你的指尖。    8月24日,农历七月七日七夕节前一天全码特的小...
2020 - 08 - 19
点击次数: 503
时隔十八个月,计算与存储再次携手,于8月16-20日在云南大理共同举办“华为分销合作伙伴峰会”,本次大会旨在答谢合作伙伴过去对华为的贡献,同时向伙伴们传达最新的渠道政策及规划,为2020年分销业务铺平前进的道路。会议分为两大部分:         8月17日(周一):计算日(2020华为-intel分销合作伙伴峰会)  8月18日(周二)...
2020 - 04 - 10
点击次数: 516
百年难遇的疫情肆虐全球,白衣卫士们保护着我们静好中前行。新冠肺炎疫情的发生,不可避免会对我国经济和社会发展造成较大的冲击,特别是中短期内带来的综合影响不可忽视。2个月过去了,疫情尚未结束,全码特也在彷徨中复工,艰难中奋进!随危而来的,必然是有机,“需求永远存在”,需求可能会萎缩但绝不可能消失,能抓住新的需求,谁就抓住了新时代的钥匙。长达数月的周期,势必会造成人们心理和生活习惯上的改变,没有伤痕累累...


Copyright ©2018 - 2019 成都全码特时代科技有限公司
犀牛云提供企业云服务