存储的基本知识点理解

日期: 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 - 10 - 26
点击次数: 309
2020注定是不同寻常的一年,疫情肆虐全球,世界风云突变,而华为储存却一如既往的稳健! 据IDC 2020上半年报告 华为储存持续多年市场占有第一以外,相比2019有37%的增长!在存储细分领域市场,华为同样保持领导者地位:在全闪存领域,华为全闪存份额位居第一,引领存储市场向全闪存全面转型;在混合存储领域,华为高端存储和中端存储均占据市场份额第一位置。而在最新的 Gartner 报告中,...
2020 - 10 - 09
点击次数: 509
所有人都生活在一个无形的圈子里,在圈内有着熟悉的环境,与认识的人相处,做自己会做的事,所以会感到很轻松、很自在。但是当踏出这个圈子的界限的时候,就马上会面对不熟悉的变化与挑战,因而感到不舒适,很自然的想要退回到舒适圈内。正值秋高气爽,天空中秋雨绵绵,雨点不大不小,正好。国庆之际,时间已过一大半,在这个令人惬意的季节,迎着绵绵秋雨,踩着阵阵秋风,全码特全体员工出发啦。去哪里?美丽的玛嘉沟。干什么?看...
2020 - 09 - 23
点击次数: 506
金九银十,九月是一个分别的季节,也是一个丰收的季节,九月我们告别了炎炎的夏日,迎来了凉爽的秋季,社会秩序在新冠疫情过后正在有条不紊的恢复,各个行业也逐渐复工复产。迎国庆,庆中秋2020年9月18日(星期五)全码特携手华为存储成都站正式拉开帷幕。全码特作为华为在川藏地区的金牌分销商之一,此次华为存储成都站选中我们,全码特倍感荣幸!全码特作为四川ICT建设的元老,在企业自身发展的道路上也助力各个行业乃...


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