没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
声明:此文为网络转载,仅供学习交流!
原文地址如下:
。
Android 实现数据存储技术
本文介绍 Android 中的 5 种数据存储方式。
数据存储在开发中是使用最频繁的,在这里主要介绍 !! 平台中实现数据存
储的 " 种方式,分别是:
使用 #!$% 存储数据;
文件存储数据;
#&' 数据库存储数据;
使用 ($! 存储数据;
"网络存储数据;
下面将为大家一一详细介绍。
第一种: 使用 SharedPreferences 存储数据
#!$% 是 !! 平台上一个轻量级的存储类,主要是保存一些
常用的配置比如窗口状态,一般在 中 重载窗口状态 #)#
保存一般使用 #!$% 完成,它提供了 !! 平台常规的 ' 长 整
形、) 整形、# 字符串型的保存。
它是什么样的处理方式呢*+#!$% 类似过去 ,! 系统上的
配置文件,但是它分为多种权限,可以全局共享访问,!! 提示最终是以
- 方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比 #&' 要好
不少,如果真的存储量不大可以考虑自己定义文件格式。-+处理时 ./ 会通过自
带底层的本地 01'+$ 解析,比如 01' 方式,这样对于内存资源占用比较好。
它的本质是基于 01' 文件存储 /2 键值对数据,通常用来存储一些简单的
配置信息。
其存储位置在!!3包名4!5% 目录下。
#!$% 对象本身只能获取数据而不支持存储和修改,存储修改是通
过 6! 对象实现。
实现 #!$% 存储的步骤如下:
一、根据 (- 获取 #!$% 对象
二、利用 !78方法获取 6! 对象。
三、通过 6! 对象存储 /2 键值对数据。
四、通过 78方法提交数据。
下面是示例代码:
publicclassMainActivityextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取 SharedPreferences 对象
Contextctx=MainActivity.this;
SharedPreferencessp=ctx.getSharedPreferences("SP",
MODE_PRIVATE);
//存入数据
Editoreditor=sp.edit();
editor.putString("STRING_KEY","string");
editor.putInt("INT_KEY",0);
editor.putBoolean("BOOLEAN_KEY",true);
editor.commit();
//返回 STRING_KEY 的值
Log.d("SP",sp.getString("STRING_KEY","none"));
//如果 NOT_EXIST 不存在,则返回值为"none"
Log.d("SP",sp.getString("NOT_EXIST","none"));
}
}
这段代码执行过后,即在!!!5% 目录下生成了一
个 #$- 文件,一个应用可以创建多个这样的 - 文件。
#!$% 对象与 #&' 数据库相比,免去了创建数据库,创建表,
写 #&' 语句等诸多操作,相对而言更加方便,简洁。但是 #!$% 也有
其自身缺陷,比如其职能存储 ,,9, 和 # 五种简单的数据
类型,比如其无法进行条件查询等。所以不论 #!$% 的数据存储操作
是如何简单,它也只能是存储方式的一种补充,而无法完全替代如 #&' 数据库这样
的其他数据存储方式。
第二种: 文件存储数据
关于文件存储, 提供了 :;78方法可以用于把数据输出到文
件中,具体的实现过程与在 <#6 环境中保存数据到文件中是一样的。
文件可用来存放大量数据,如文本、图片、音频等。
默认位置:!!3包4=>>>>>>。
代码示例:
publicvoidsave()
{
try{
FileOutputStreamoutStream=this.openFileOutput("a.t
xt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes
());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH
_LONG).show();
}catch(FileNotFoundExceptione){
return;
}
catch(IOExceptione){
return;
}
}
:;78方法的第一参数用于指定文件名称,不能包含路径分隔符“?+,
如果文件不存在, !!+会自动创建它。
创建的文件保存在!!3/+4= 目录,如:
!!=-+,通过点击 6 菜单
“,!?2@#+A?2@;?,在对话窗口中展开 !! 文件夹,选择下面
的 :+6- 视图,然后在 :+6- 视图中展开!!3/+
4= 目录就可以看到该文件。
:;78方法的第二参数用于指定操作模式,有四种模式,分别为:
(-1;.65$B)A C6+D++
(-1;.65 $$6E.+D+F+
(-1;.65,;B'.5B6 . G'6+D++
(-1;.65,;B'.5,B)C6 G'6+D++
(-1;.65$B)A C6:为默认操作模式,代表该文件是私有数据,只能被
应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内
容追加到原文件中。可以使用 (-1;.65 $$6E.+
(-1;.65 $$6E.:模式会检查文件是否存在,存在就往文件追加内容,
否则就创建新文件。
(-1;.65,;B'.5B6 . G'6 和
(-1;.65,;B'.5,B)C6 G'6 用来控制其他应用是否有权限读写该文件。
1;.65,;B'.5B6 . G'6:表示当前文件可以被其他应用读取;
1;.65,;B'.5,B)C6 G'6:表示当前文件可以被其他应用写入。
如果希望文件被其他应用读和写,可以传入: :;7H-HI+
(-1;.65,;B'.5B6 . G'6+J+(-1;.65,;B'.5,B)C6 G'68K
!! 有一套自己的安全模型,当应用程序7/8在安装时系统就会分配给他一个
!,当该应用要去访问其他资源比如文件的时候,就需要 ! 匹配。默认情况
下,任何应用创建的文件,!%,数据库都应该是私有的(位于
!!3/+4=),其他程序无法访问。
除非在创建时指定了 (-1;.65,;B'.5B6 . G'6 或者
(-1;.65,;B'.5,B)C6 G'6+,只有这样其他程序才能正确访问。
读取文件示例:
publicvoidload()
{
try{
FileInputStreaminStream=this.openFileInput("a.txt");
ByteArrayOutputStreamstream=newByteArrayOutputStream();
byte[]buffer=newbyte[1024];
intlength=-1;
while((length=inStream.read(buffer))!=-1){
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
text.setText(stream.toString());
Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).sh
ow();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}
catch(IOExceptione){
return;
}
}
对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,
可以在创建文件时,指定 (-1;.65,;B'.5B6 . G'6 和
(-1;.65,;B'.5,B)C6 G'6 权限。
还提供了 (.78和 :.78方法: (.78方法用
于获取!!3/+4 目录 :.78方法用于获
取!!3/+4= 目录。
把文件存入 #.(!
使用 的 :;78方法保存文件,文件是存放在手机空间上,
一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,
是不可行的。对于像视频这样的大文件,我们可以把它存放在 #.(!。
#.(! 是干什么的?你可以把它看作是移动硬盘或 L 盘。 在模拟器中使用
#.(!,你需要先创建一张 #.(! 卡(当然不是真的 #.(!,只是镜像文件)。
创建 #.(! 可以在 6 创建模拟器时随同创建,也可以使用 .;# 命令进行
创建,如下: 在 . 窗口中进入 !!+#.M 安装路径的 目录,输入以下命
令创建一张容量为 N 的 #.(!,文件后缀可以随便取,建议使用:
/!!+1+.O !!CO!!+在程序中访问 #.(!,你需要申
请访问 #.(! 的权限。
在 !!1%- 中加入访问 #.(! 的权限如下+
3P22+在 #.(! 中创建与删除文件权限 224+
32+
!!DH!!1;LEC5LE1;LEC5:)'6#Q#C61#H4
3P22+往 #.(! 写入数据权限 224
32+
!!DH!!,B)C6560C6BE '5#C;B N6H4+
要往 #.(! 存放文件,程序必须先判断手机是否装有 #.(!,并且可以进行
读写。
剩余21页未读,继续阅读
资源评论
- wd3442616122014-05-01很好,每个都有例子配合。
- shangrilachen2013-04-09很好,每个都有例子配合。
- qyh_smile2013-05-04非常好,很是喜欢的哈!
- fyliujy2013-10-07不错,有很多方法,每种方法还给了例子。
php321
- 粉丝: 13
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功