flash,AIR的本地存储初步了解
2013-02-04 21:45
246 查看
呃,只是今天在做手机上的air程序的存储,所以稍微看了下flash,air的存储本地数据方面的知识。
存储本地数据的方法其实有不少,最简单的就是用shareObject了,的确是最简单的了,基本属于零基础就能用的了。shareObject直译为共享对象(有时称为“Flash cookie”)是一个数据文件,可以将数据存储到用户的本地硬盘上,然后在同一会话期间或以后的会话中调用这些数据。各应用程序仅能访问它们自己的 SharedObject 数据,而且仅当它们在同一域中运行时才能访问。不会将这些数据发送到服务器,并且在其他域中运行的其他应用程序不能访问这些数据,但同一域中的应用程序可以访问这些数据。
共享对象有以下属性:
• 默认情况下不会到期。
• 默认情况下,每个共享对象的大小限制为 100 KB。
• 可以存储简单的数据类型(例如字符串、数组和日期等)。
• 存储在应用程序指定的位置(位于用户的主目录中)。
• 永远不会在客户端和服务器之间传输。
可以看出,ShareObject的限制就是单个文件大小不能超过100k,但是这些对于存储小的数据也绰绰有余了。另外,假如保存成功的话共享对象的大小将超过 100 KB,则 Flash Player 将显示“ 本地存储区” 对话框,用户可在该对话框中允许或拒绝为请求访问的域增加本地存储区。
ShareObject的方法有
clear()清除数据,删除ShareObject;
flush()立即将数据刷入文件;
getLocal()返回ShareObject的引用,不存在的话就新建一个(很方便)
getSize()获取存储数据的文件大小
使用的方法如下:
这样就可以在默认的用户主目录的子目录下创建一个叫做preferences.sol的文件了,里面存有数据
这个目录在不同系统下会有变化(但是一般的话,其实不用太过关注...因为这一切都是自动的)
So.data.first = "animal";这样就可在first上存一个"animal"值了
读的时候直接用So.data.first就可以了
其他的还有个就是数据加密的问题,这里需要注意的一个是在用air开发Android应用时,Android 操作系统为每个应用程序分配一个单独的用户 ID。应用程序只能访问自己的文件和在公共位置创建的文件(如移动存储卡)。注意,在 Android 的“ 根” 设备上,使用根权限运行的应用程序可以访问其他应用程序的文件。因此,在根设备上,加密的本地存储不提供与非根设备上级别一样高的数据保护。
另外再说一个air里的File类,
File 对象表示文件或目录的路径。这可以是现有的文件或目录,也可以是尚不存在的文件或目录(例如,它可以表示希望创建的文件或目录的路径)。
File 类包含一些静态属性,供引用常用目录位置。这些静态属性包括:
•File.applicationStorageDirectory — 每个已安装的 AIR 应用程序独有的存储目录
•File.applicationDirectory — 安装应用程序的只读目录(其中包括所有已安装的资源)
•File.desktopDirectory — 用户的桌面目录
•File.documentsDirectory — 用户的文档目录
•File.userDirectory — 用户目录
有了这些属性,就可以不用担心因为使用了文本常量形式的本机路径(如"C:\Documents and Settings\test.txt"),结果只在一个平台上有效的问题了。
跨平台的时候效果很好,使用示例如下,此代码会指向应用程序存储目录中的 preferences.xml 文件
var prefsFile:File = File.applicationStorageDirectory;
prefsFile = prefsFile.resolvePath("preferences.xml");
但是要注意的一点是File.applicationDirectory是个只读目录,所以不能直接利用这个地址写入,但是用一个new之后,问题就可以得到解决
下面这个例子演示了如何读入本地的xml数据文件,修改其中数据的过程。
var countFile:File = new File(File.applicationDirectory.resolvePath("Levels/levelCount.xml").nativePath);
//open for the first time
var fileStream:FileStream = new FileStream();
fileStream.open(countFile,FileMode.READ);
var content:XML = new XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
content.cnt=(currentLevel+1).toString();
//open for the second time in order to write data
fileStream.open(countFile,FileMode.WRITE);
fileStream.writeUTFBytes(content.toXMLString());
fileStream.close();
另外的话,其实还有很多种方法(如在 AIR 中使用本地 SQL 数据库),每一种深入的话也都可以很深入...
虽然现在已经在使用的是这么用,不过因为理解的不是很深,所以有些地方的限制还不太了解...以后再看看有没有机会加深理解来修正,更新笔记吧~
存储本地数据的方法其实有不少,最简单的就是用shareObject了,的确是最简单的了,基本属于零基础就能用的了。shareObject直译为共享对象(有时称为“Flash cookie”)是一个数据文件,可以将数据存储到用户的本地硬盘上,然后在同一会话期间或以后的会话中调用这些数据。各应用程序仅能访问它们自己的 SharedObject 数据,而且仅当它们在同一域中运行时才能访问。不会将这些数据发送到服务器,并且在其他域中运行的其他应用程序不能访问这些数据,但同一域中的应用程序可以访问这些数据。
共享对象有以下属性:
• 默认情况下不会到期。
• 默认情况下,每个共享对象的大小限制为 100 KB。
• 可以存储简单的数据类型(例如字符串、数组和日期等)。
• 存储在应用程序指定的位置(位于用户的主目录中)。
• 永远不会在客户端和服务器之间传输。
可以看出,ShareObject的限制就是单个文件大小不能超过100k,但是这些对于存储小的数据也绰绰有余了。另外,假如保存成功的话共享对象的大小将超过 100 KB,则 Flash Player 将显示“ 本地存储区” 对话框,用户可在该对话框中允许或拒绝为请求访问的域增加本地存储区。
ShareObject的方法有
clear()清除数据,删除ShareObject;
flush()立即将数据刷入文件;
getLocal()返回ShareObject的引用,不存在的话就新建一个(很方便)
getSize()获取存储数据的文件大小
使用的方法如下:
public var mySO:SharedObject; mySO = SharedObject.getLocal("preferences");
这样就可以在默认的用户主目录的子目录下创建一个叫做preferences.sol的文件了,里面存有数据
这个目录在不同系统下会有变化(但是一般的话,其实不用太过关注...因为这一切都是自动的)
So.data.first = "animal";这样就可在first上存一个"animal"值了
读的时候直接用So.data.first就可以了
其他的还有个就是数据加密的问题,这里需要注意的一个是在用air开发Android应用时,Android 操作系统为每个应用程序分配一个单独的用户 ID。应用程序只能访问自己的文件和在公共位置创建的文件(如移动存储卡)。注意,在 Android 的“ 根” 设备上,使用根权限运行的应用程序可以访问其他应用程序的文件。因此,在根设备上,加密的本地存储不提供与非根设备上级别一样高的数据保护。
另外再说一个air里的File类,
File 对象表示文件或目录的路径。这可以是现有的文件或目录,也可以是尚不存在的文件或目录(例如,它可以表示希望创建的文件或目录的路径)。
File 类包含一些静态属性,供引用常用目录位置。这些静态属性包括:
•File.applicationStorageDirectory — 每个已安装的 AIR 应用程序独有的存储目录
•File.applicationDirectory — 安装应用程序的只读目录(其中包括所有已安装的资源)
•File.desktopDirectory — 用户的桌面目录
•File.documentsDirectory — 用户的文档目录
•File.userDirectory — 用户目录
有了这些属性,就可以不用担心因为使用了文本常量形式的本机路径(如"C:\Documents and Settings\test.txt"),结果只在一个平台上有效的问题了。
跨平台的时候效果很好,使用示例如下,此代码会指向应用程序存储目录中的 preferences.xml 文件
var prefsFile:File = File.applicationStorageDirectory;
prefsFile = prefsFile.resolvePath("preferences.xml");
但是要注意的一点是File.applicationDirectory是个只读目录,所以不能直接利用这个地址写入,但是用一个new之后,问题就可以得到解决
var file:File = new File(File.applicationDirectory.resolvePath("preferences.xml").nativePath);
下面这个例子演示了如何读入本地的xml数据文件,修改其中数据的过程。
var countFile:File = new File(File.applicationDirectory.resolvePath("Levels/levelCount.xml").nativePath);
//open for the first time
var fileStream:FileStream = new FileStream();
fileStream.open(countFile,FileMode.READ);
var content:XML = new XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
content.cnt=(currentLevel+1).toString();
//open for the second time in order to write data
fileStream.open(countFile,FileMode.WRITE);
fileStream.writeUTFBytes(content.toXMLString());
fileStream.close();
另外的话,其实还有很多种方法(如在 AIR 中使用本地 SQL 数据库),每一种深入的话也都可以很深入...
虽然现在已经在使用的是这么用,不过因为理解的不是很深,所以有些地方的限制还不太了解...以后再看看有没有机会加深理解来修正,更新笔记吧~
相关文章推荐
- 对于MySQL的存储过程初步了解
- 未能在指定文件夹中创建本地存储区,请选择其他位置。可以检查事件日志以了解详细信息
- 进程管理、内存管理、存储管理初步了解
- 了解Flex、Flash、AIR、flashBuilder、MXML、ActionScript的关系
- flash本地存储数据SharedObject类
- VS2010安装MSDN出错:“未能在指定文件夹中创建本地存储区,请选择其他位置。可以检查事件日志以了解详细信息”
- webgis本地部署之初步了解web应用程序
- 学习存储过程的时候参看的两个DVBBS的存储过程和两个初步了解后自己写的存储过程(带分页的)
- 如何使用Flash来实现本地存储.续
- 学习存储过程的时候参看的两个DVBBS的存储过程和两个初步了解后自己写的存储过程(带分页的)
- iOS开发中本地数据存储的 ios登录成功后将用户的数据存储到本地 下次打开应用时不用重复登录了
- 性能:15个JavaScript本地存储技术的函数库和工具
- 小强的HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)
- Struts2学习笔记(一)初步了解Struts2以及配置
- Unity3d本地存储
- HTML5本地存储Localstorage实现注册登录以及验证
- 每天学一点flash(19) flash cs3.0 制作air (1)
- 大小在1亿左右的不同编号的本地存储
- 线程初步了解 - <第一篇>
- Jenkins系列1--初步了解