文件管理
不同的移動操作系統(tǒng)都有自己的一套文件管理結構和文件處理的SDK。AppWorker平臺屏蔽Android和iOS之間不同結構的差異,統(tǒng)一了文件處理和相關的處理組件乎串。總體上分源碼區(qū)旺上,初始化數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)糖埋。不同的文件區(qū)用不同的URI來區(qū)分宣吱。
簡單區(qū)分就是權限的差異:
源碼區(qū):不可讀不可寫,只能作為屬性的值或方法的參數(shù)
初始化數(shù)據(jù)區(qū):可讀不可寫瞳别,不能作為屬性的值或方法的參數(shù)
數(shù)據(jù)區(qū):可讀可寫征候,也可以作為屬性的值或方法的參數(shù)
1.?源碼區(qū),source://
這個目錄存儲應用源文件洒试,這個目錄下所有文件以?source://為前綴倍奢。
在電腦上就是我們AppWorker項目中的source目錄,包含ui,ui.js,js文件和其它任意資源文件垒棋。AppWorker開發(fā)的的App安裝包里會包含這個目錄,安裝后會存儲在手機里的系統(tǒng)目錄下痪宰。但是不能在App運行時通過代碼直接讀寫source下的文件的內容.
這個區(qū)的代碼文件可以根據(jù)用戶的選擇來自動加密叼架,加密可以參考文檔。
很多組件的屬性和參數(shù)可以以source目錄下的文件為參數(shù)衣撬。比如
//do_ImageView以source下的圖片為源
var imageview = ui("imageview_id1");
imageview.source = "source://img/test.png";
有一種特殊的情況乖订,可以在應用運行時操作source目錄下的文件,就是利用do_App的update方法把data目錄下的文件拷貝覆蓋到source目錄下具练,詳細參考應用升級的文檔
2.?數(shù)據(jù)區(qū)乍构,data://
這個目錄存儲移動應用運行時的數(shù)據(jù)文件,可讀可寫這個目錄下所有文件以?data://為前綴扛点。
應用運行時可以通過do_Storage組件來訪問和讀寫這個目錄下的所有文件哥遮。
注意岂丘,這個目錄在電腦里創(chuàng)建沒有意義,它不會拷貝到手機端眠饮。這個目錄下所有文件都必須在手機運行時才能讀和寫
//以do_Storage來讀寫文件內容
var storage = sm("do_Storage");
storage.readFile("data://test.txt",function(data){
? ? print(data);
});
還有一種用法是很多組件的屬性和參數(shù)可以以data目錄下的文件為參數(shù),或者生成的臨時文件保存在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.?初始化數(shù)據(jù)區(qū),initdata://
這個目錄是一個特殊的目錄仪召,新建一個項目會缺省生成這個目錄寨蹋,專門用來存放一些只讀文件,存放一些程序啟動后的初始化數(shù)據(jù)扔茅。
AppWorker開發(fā)的的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:// 的文件不能作為屬性的值和方法的參數(shù)(do_InitData組件除外)