文件管理
不同的移动操作系统都有自己的一套文件管理结构和文件处理的SDK。AppWorker平台屏蔽Android和iOS之间不同结构的差异,统一了文件处理和相关的处理组件。总体上分源码区,初始化数据区,数据区。不同的文件区用不同的URI来区分。
简单区分就是权限的差异:
源码区:不可读不可写,只能作为属性的值或方法的参数
初始化数据区:可读不可写,不能作为属性的值或方法的参数
数据区:可读可写,也可以作为属性的值或方法的参数
1. 源码区,source://
这个目录存储应用源文件,这个目录下所有文件以 source://为前缀。
在电脑上就是我们AppWorker项目中的source目录,包含ui,ui.js,js文件和其它任意资源文件。AppWorker开发的的App安装包里会包含这个目录,安装后会存储在手机里的系统目录下。但是不能在App运行时通过代码直接读写source下的文件的内容.
这个区的代码文件可以根据用户的选择来自动加密,加密可以参考文档。
很多组件的属性和参数可以以source目录下的文件为参数。比如
//do_ImageView以source下的图片为源
var imageview = ui("imageview_id1");
imageview.source = "source://img/test.png";
有一种特殊的情况,可以在应用运行时操作source目录下的文件,就是利用do_App的update方法把data目录下的文件拷贝覆盖到source目录下,详细参考应用升级的文档
2. 数据区,data://
这个目录存储移动应用运行时的数据文件,可读可写这个目录下所有文件以 data://为前缀。
应用运行时可以通过do_Storage组件来访问和读写这个目录下的所有文件。
注意,这个目录在电脑里创建没有意义,它不会拷贝到手机端。这个目录下所有文件都必须在手机运行时才能读和写
//以do_Storage来读写文件内容
var storage = sm("do_Storage");
storage.readFile("data://test.txt",function(data){
print(data);
});
还有一种用法是很多组件的属性和参数可以以data目录下的文件为参数,或者生成的临时文件保存在data目录下。比如
//do_ImageView以data下的图片为源
var imageview = ui("imageview_id1");
imageview.source = "data://img/test.png";
//do_Album选中照片后返回一个图片到data://目录下
var album = sm("do_Album");
album.select(1, "", "", "", function(d) {
print(d);
//d的值是data://temp/do_Album/radom_name.png
})
3. 初始化数据区,initdata://
这个目录是一个特殊的目录,新建一个项目会缺省生成这个目录,专门用来存放一些只读文件,存放一些程序启动后的初始化数据。
AppWorker开发的的App安装包里会包含这个目录,安装后会存储在手机里的存储目录下。应用运行时可以通过do_InitData组件来读这个目录下的文件的内容,但是不能写。
注意:只能读不能写
//以do_InitData来读文件内容
var initdata = sm("do_InitData");
initdata.readFile("initdata://test.txt",function(data){
print(data);
});
还有一种用法是通过do_InitData组件的copy和unzip等方法把initdata下等文件复制到data目录下,然后就可以在data目录下读写了。
initdata:// 的文件不能作为属性的值和方法的参数(do_InitData组件除外)