OpenHarmony應(yīng)用開發(fā)零基礎(chǔ)入門 課件 第5章 數(shù)據(jù)存儲(chǔ)與訪問_第1頁(yè)
OpenHarmony應(yīng)用開發(fā)零基礎(chǔ)入門 課件 第5章 數(shù)據(jù)存儲(chǔ)與訪問_第2頁(yè)
OpenHarmony應(yīng)用開發(fā)零基礎(chǔ)入門 課件 第5章 數(shù)據(jù)存儲(chǔ)與訪問_第3頁(yè)
OpenHarmony應(yīng)用開發(fā)零基礎(chǔ)入門 課件 第5章 數(shù)據(jù)存儲(chǔ)與訪問_第4頁(yè)
OpenHarmony應(yīng)用開發(fā)零基礎(chǔ)入門 課件 第5章 數(shù)據(jù)存儲(chǔ)與訪問_第5頁(yè)
已閱讀5頁(yè),還剩227頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

倪紅軍OpenHarmony應(yīng)用開發(fā)

零基礎(chǔ)入門第五章數(shù)據(jù)存儲(chǔ)與訪問

5.1概述

5.2睡眠質(zhì)量測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

5.3備忘錄的設(shè)計(jì)與實(shí)現(xiàn)

5.4我愛背單詞的設(shè)計(jì)與實(shí)現(xiàn)倪紅軍制作5.1概述本節(jié)要點(diǎn)1.了解結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)的概念2.了解用戶首選項(xiàng)、鍵值型數(shù)據(jù)庫(kù)及關(guān)系型數(shù)據(jù)庫(kù)等結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)與訪問機(jī)制3.了解文件非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)與訪問機(jī)制倪紅軍制作5.1.1數(shù)據(jù)管理機(jī)制1.用戶首選項(xiàng)用戶首選項(xiàng)(Preferences)提供了輕量級(jí)配置數(shù)據(jù)的持久化能力,并支持訂閱數(shù)據(jù)變化的通知能力。數(shù)據(jù)以文本形式保存在設(shè)備中,應(yīng)用使用過程中會(huì)將文本中的數(shù)據(jù)全部加載到內(nèi)存,具有訪問速度快、效率高的特性,但不適合存儲(chǔ)大量數(shù)據(jù)的場(chǎng)景,不支持分布式同步,常用于保存應(yīng)用配置信息、用戶偏好設(shè)置等。在ArkTS開發(fā)框架的“@ohos.data.preferences”模塊中提供了用戶首選項(xiàng)存儲(chǔ)與訪問接口來實(shí)現(xiàn)對(duì)存儲(chǔ)對(duì)象相關(guān)的數(shù)據(jù)操作。倪紅軍制作5.1.1數(shù)據(jù)管理機(jī)制2.鍵值型數(shù)據(jù)庫(kù)鍵值型數(shù)據(jù)庫(kù)(KV-Store)提供了鍵值型數(shù)據(jù)庫(kù)的讀寫、加密、手動(dòng)備份以及訂閱通知能力。它是一種非關(guān)系型數(shù)據(jù)庫(kù),其數(shù)據(jù)以“鍵值”對(duì)的形式進(jìn)行組織、索引和存儲(chǔ),其中“鍵”作為唯一標(biāo)識(shí)符。適合很少數(shù)據(jù)關(guān)系和業(yè)務(wù)關(guān)系的業(yè)務(wù)數(shù)據(jù)存儲(chǔ),同時(shí)因其在分布式場(chǎng)景中降低了解決數(shù)據(jù)庫(kù)版本兼容問題的復(fù)雜度,和數(shù)據(jù)同步過程中沖突解決的復(fù)雜度而被廣泛使用。相比于關(guān)系型數(shù)據(jù)庫(kù),更容易做到跨設(shè)備跨版本兼容。應(yīng)用需要使用鍵值型數(shù)據(jù)庫(kù)的分布式能力時(shí),KV-Store會(huì)將同步請(qǐng)求發(fā)送給DatamgrService由其完成跨設(shè)備數(shù)據(jù)同步。ArkTS開發(fā)框架的“@ohos.data.distributedKVStore”模塊中提供了鍵值型數(shù)據(jù)庫(kù)持久化功能的相關(guān)接口。倪紅軍制作5.1.1數(shù)據(jù)管理機(jī)制3.關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)提供了關(guān)系型數(shù)據(jù)庫(kù)的增刪改查、加密、手動(dòng)備份以及訂閱通知能力。它是一種關(guān)系型數(shù)據(jù)庫(kù),以行和列的形式存儲(chǔ)數(shù)據(jù),廣泛用于應(yīng)用中的關(guān)系型數(shù)據(jù)的處理,包括一系列的增、刪、改、查等接口,開發(fā)者也可以運(yùn)行自己定義的SQL語句來滿足復(fù)雜業(yè)務(wù)場(chǎng)景的需要。應(yīng)用需要使用關(guān)系型數(shù)據(jù)庫(kù)的分布式能力時(shí),RelationalStore部件會(huì)將同步請(qǐng)求發(fā)送給DatamgrService由其完成跨設(shè)備數(shù)據(jù)同步。ArkTS開發(fā)框架的“@ohos.data.relationalStore”模塊中提供了一套完整的對(duì)本地?cái)?shù)據(jù)庫(kù)進(jìn)行管理的能力。倪紅軍制作5.1.2文件管理機(jī)制從用戶的角度看,文件管理機(jī)制為用戶提供了按文件名管理文件的能力,即實(shí)現(xiàn)“按名存取”。從系統(tǒng)的角度看,文件管理機(jī)制是對(duì)文件存儲(chǔ)設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。在文件管理模塊中,文件系統(tǒng)按文件存儲(chǔ)的位置分為本地文件系統(tǒng)和分布式文件系統(tǒng)。本地文件系統(tǒng)提供本地設(shè)備或外置存儲(chǔ)設(shè)備(如U盤、移動(dòng)硬盤)的文件訪問能力,本地文件系統(tǒng)是最基本的文件系統(tǒng);分布式文件系統(tǒng)提供跨設(shè)備的文件訪問能力。在文件管理模塊中,文件按文件的所有者分為應(yīng)用文件、用戶文件和系統(tǒng)文件。倪紅軍制作5.1.2文件管理機(jī)制應(yīng)用文件的文件所有者為應(yīng)用本身,包括應(yīng)用的安裝文件、資源文件和緩存文件等。用戶文件的文件所有者為登錄到該終端設(shè)備的用戶,包括用戶私有的圖片、文檔、音頻和視頻文件等。既不屬于應(yīng)用文件,也不屬于用戶文件的其他文件就是系統(tǒng)文件,包括公共庫(kù)、設(shè)備文件及系統(tǒng)資源文件等。華為官方推出的API提供了一系列完整的文件管理模塊配套接口,用來實(shí)現(xiàn)OpenHarmony應(yīng)用開發(fā)中非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)與訪問。其中,“@ohos.file.fs”模塊中提供了文件基本管理、文件目錄管理、文件信息統(tǒng)計(jì)、文件流式讀寫等基礎(chǔ)文件操作能力。倪紅軍制作5.2睡眠質(zhì)量測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)本節(jié)要點(diǎn)1.掌握Toggle、Stepper、StepperItem組件的使用方法和應(yīng)用場(chǎng)景2.掌握頁(yè)面路由的使用方法和應(yīng)用場(chǎng)景3.掌握UIAbility組件的生命周期、啟動(dòng)模式和組件間的跳轉(zhuǎn)及數(shù)據(jù)傳遞的方法4.掌握用戶首選項(xiàng)存儲(chǔ)與訪問接口中的數(shù)據(jù)操作方法和應(yīng)用場(chǎng)景5.掌握睡眠質(zhì)量測(cè)試系統(tǒng)的實(shí)現(xiàn)方法倪紅軍制作5.2.1Toggle組件Toggle組件(切換組件)用于切換選擇狀態(tài),包括勾選框樣式、狀態(tài)按鈕樣式和開關(guān)樣式,其接口格式如下所示。(1)type參數(shù)用于設(shè)置開關(guān)的樣式,包括CheckBox(勾選框樣式)、Button(狀態(tài)按鈕樣式)和Switch(開關(guān)樣式)。(2)isOn參數(shù)用于設(shè)置開關(guān)是否打開,默認(rèn)值為false(關(guān)閉)。為了滿足各種應(yīng)用開發(fā)場(chǎng)景的需要,該組件除支持通用屬性和通用事件外,還支持如上所示的屬性和下表所示的事件。倪紅軍制作5.2.1Toggle組件【范例5-1】用Toggle組件在頁(yè)面上實(shí)現(xiàn)一個(gè)模擬開燈、關(guān)燈的效果,運(yùn)行效果如圖所示。倪紅軍制作5.2.1Toggle組件【范例5-2】設(shè)計(jì)如圖所示就業(yè)意向調(diào)查表,“你在就業(yè)過程中最注重什么?”的答案選項(xiàng)由5個(gè)狀態(tài)按鈕組件組成,但用戶只能選其中一項(xiàng);“你希望從哪些渠道獲得企業(yè)的招聘信息”的答案選項(xiàng)由5個(gè)狀態(tài)按鈕組件組成,但用戶可以選多項(xiàng)。單擊“提交”按鈕后,將用戶選項(xiàng)結(jié)果顯示在頁(yè)面下方。倪紅軍制作5.2.1Toggle組件【范例5-2】設(shè)計(jì)如圖所示就業(yè)意向調(diào)查表,“你在就業(yè)過程中最注重什么?”的答案選項(xiàng)由5個(gè)狀態(tài)按鈕組件組成,但用戶只能選其中一項(xiàng);“你希望從哪些渠道獲得企業(yè)的招聘信息”的答案選項(xiàng)由5個(gè)狀態(tài)按鈕組件組成,但用戶可以選多項(xiàng)。單擊“提交”按鈕后,將用戶選項(xiàng)結(jié)果顯示在頁(yè)面下方。倪紅軍制作5.2.1Toggle組件【范例5-2】設(shè)計(jì)如圖所示就業(yè)意向調(diào)查表,“你在就業(yè)過程中最注重什么?”的答案選項(xiàng)由5個(gè)狀態(tài)按鈕組件組成,但用戶只能選其中一項(xiàng);“你希望從哪些渠道獲得企業(yè)的招聘信息”的答案選項(xiàng)由5個(gè)狀態(tài)按鈕組件組成,但用戶可以選多項(xiàng)。單擊“提交”按鈕后,將用戶選項(xiàng)結(jié)果顯示在頁(yè)面下方。倪紅軍制作5.2.2Stepper和StepperItem組件Stepper組件(步驟導(dǎo)航器組件)用于引導(dǎo)用戶完成一個(gè)任務(wù)需要多個(gè)步驟的導(dǎo)航場(chǎng)景,它通常與StepperItem組件(步驟導(dǎo)航器子組件)配合使用。Stepper和StepperItem的接口格式如下所示。index參數(shù)用于設(shè)置步驟導(dǎo)航器當(dāng)前顯示StepperItem的索引值,默認(rèn)值為0。倪紅軍制作5.2.2Stepper和StepperItem組件Stepper組件除支持通用事件外,還支持如表所示的事件。倪紅軍制作5.2.2Stepper和StepperItem組件StepperItem組件除支持通用屬性外,還支持如表所示的屬性。如果沒有定義prevLabel屬性,在中文語言環(huán)境下,默認(rèn)使用“返回”和“下一步”文本按鈕;在非中文語言環(huán)境下,默認(rèn)使用“BACK”和“NEXT”文本按鈕;如果是第一個(gè)步驟,則頁(yè)面上沒有回退文本按鈕;如果是最后一個(gè)步驟,則頁(yè)面上的下一步為“開始”文本按鈕(中文語言)或者“START”文本按鈕(非中文語言)。倪紅軍制作5.2.2Stepper和StepperItem組件【范例5-3】設(shè)計(jì)一個(gè)如圖所示的會(huì)員注冊(cè)頁(yè)面,在會(huì)員注冊(cè)頁(yè)面上用步驟導(dǎo)航器分別輸入“用戶名”、“用戶密碼”和“找回密碼問題、找回密碼答案”等會(huì)員注冊(cè)信息,單擊“提交”按鈕,在頁(yè)面下方顯示注冊(cè)內(nèi)容。倪紅軍制作5.2.2Stepper和StepperItem組件【范例5-3】設(shè)計(jì)一個(gè)如圖所示的會(huì)員注冊(cè)頁(yè)面,在會(huì)員注冊(cè)頁(yè)面上用步驟導(dǎo)航器分別輸入“用戶名”、“用戶密碼”和“找回密碼問題、找回密碼答案”等會(huì)員注冊(cè)信息,單擊“提交”按鈕,在頁(yè)面下方顯示注冊(cè)內(nèi)容。倪紅軍制作5.2.2Stepper和StepperItem組件【范例5-3】設(shè)計(jì)一個(gè)如圖所示的會(huì)員注冊(cè)頁(yè)面,在會(huì)員注冊(cè)頁(yè)面上用步驟導(dǎo)航器分別輸入“用戶名”、“用戶密碼”和“找回密碼問題、找回密碼答案”等會(huì)員注冊(cè)信息,單擊“提交”按鈕,在頁(yè)面下方顯示注冊(cè)內(nèi)容。倪紅軍制作5.2.2Stepper和StepperItem組件【范例5-3】設(shè)計(jì)一個(gè)如圖所示的會(huì)員注冊(cè)頁(yè)面,在會(huì)員注冊(cè)頁(yè)面上用步驟導(dǎo)航器分別輸入“用戶名”、“用戶密碼”和“找回密碼問題、找回密碼答案”等會(huì)員注冊(cè)信息,單擊“提交”按鈕,在頁(yè)面下方顯示注冊(cè)內(nèi)容。倪紅軍制作5.2.3頁(yè)面路由大多數(shù)應(yīng)用程序通常由多個(gè)頁(yè)面組成,并且頁(yè)面與頁(yè)面之間可以相互跳轉(zhuǎn)和數(shù)據(jù)傳遞,這些能力是由“@ohos.router”模塊(頁(yè)面路由)提供的。包括實(shí)現(xiàn)應(yīng)用內(nèi)指定頁(yè)面的跳轉(zhuǎn)、同應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面、返回上一頁(yè)面及返回指定頁(yè)面等功能。1.應(yīng)用內(nèi)指定頁(yè)面的跳轉(zhuǎn)router.pushUrl(options:RouterOptions):Promise<void>:跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面描述信息,RouterOptions類型的參數(shù)及功能說明如上表所示;返回值類型為Promise<void>,表示異常返回結(jié)果,錯(cuò)誤碼詳細(xì)說明如下表所示。倪紅軍制作5.2.3頁(yè)面路由【范例5-4】在范例5-3的基礎(chǔ)上,點(diǎn)擊頁(yè)面上的“結(jié)束”按鈕,跳轉(zhuǎn)到如圖所示的注冊(cè)成功頁(yè)面,點(diǎn)擊注冊(cè)成功頁(yè)面上的“返回”按鈕,跳轉(zhuǎn)返回到圖范例5-3所示的會(huì)員注冊(cè)頁(yè)面。(1)自定義封裝類倪紅軍制作5.2.3頁(yè)面路由【范例5-4】在范例5-3的基礎(chǔ)上,點(diǎn)擊頁(yè)面上的“結(jié)束”按鈕,跳轉(zhuǎn)到如圖所示的注冊(cè)成功頁(yè)面,點(diǎn)擊注冊(cè)成功頁(yè)面上的“返回”按鈕,跳轉(zhuǎn)返回到圖范例5-3所示的會(huì)員注冊(cè)頁(yè)面。(2)在范例5-3基礎(chǔ)上實(shí)現(xiàn)帶參數(shù)跳轉(zhuǎn)倪紅軍制作5.2.3頁(yè)面路由【范例5-4】在范例5-3的基礎(chǔ)上,點(diǎn)擊頁(yè)面上的“結(jié)束”按鈕,跳轉(zhuǎn)到如圖所示的注冊(cè)成功頁(yè)面,點(diǎn)擊注冊(cè)成功頁(yè)面上的“返回”按鈕,跳轉(zhuǎn)返回到圖范例5-3所示的會(huì)員注冊(cè)頁(yè)面。(3)創(chuàng)建注冊(cè)成功頁(yè)面倪紅軍制作5.2.3頁(yè)面路由大多數(shù)應(yīng)用程序通常由多個(gè)頁(yè)面組成,并且頁(yè)面與頁(yè)面之間可以相互跳轉(zhuǎn)和數(shù)據(jù)傳遞,這些能力是由“@ohos.router”模塊(頁(yè)面路由)提供的。包括實(shí)現(xiàn)應(yīng)用內(nèi)指定頁(yè)面的跳轉(zhuǎn)、同應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面、返回上一頁(yè)面及返回指定頁(yè)面等功能。1.應(yīng)用內(nèi)指定頁(yè)面的跳轉(zhuǎn)router.pushUrl(options:RouterOptions):Promise<void>:跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面描述信息,RouterOptions類型的參數(shù)及功能說明如表所示;返回值類型為Promise<void>,表示異常返回結(jié)果,錯(cuò)誤碼詳細(xì)說明如表所示。router.pushUrl(options:RouterOptions,callback:AsyncCallback<void>):void:跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面描述信息;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。倪紅軍制作5.2.3頁(yè)面路由大多數(shù)應(yīng)用程序通常由多個(gè)頁(yè)面組成,并且頁(yè)面與頁(yè)面之間可以相互跳轉(zhuǎn)和數(shù)據(jù)傳遞,這些能力是由“@ohos.router”模塊(頁(yè)面路由)提供的。包括實(shí)現(xiàn)應(yīng)用內(nèi)指定頁(yè)面的跳轉(zhuǎn)、同應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面、返回上一頁(yè)面及返回指定頁(yè)面等功能。1.應(yīng)用內(nèi)指定頁(yè)面的跳轉(zhuǎn)router.pushUrl(options:RouterOptions,mode:RouterMode):Promise<void>:跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式,RouterMode類型傳下及功能說明如表所示;返回值類型為Promise<void>,表示異常返回結(jié)果。router.pushUrl(options:RouterOptions,mode:RouterMode,callback:AsyncCallback<void>):void:跳轉(zhuǎn)到應(yīng)用內(nèi)的指定頁(yè)面。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。倪紅軍制作5.2.3頁(yè)面路由2.應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面router.replaceUrl(options:RouterOptions):Promise<void>:用應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置替換頁(yè)面描述信息;返回值類型為Promise<void>,表示異常返回結(jié)果。router.replaceUrl(options:RouterOptions,callback:AsyncCallback<void>):void:用應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面。options參數(shù)用于設(shè)置替換頁(yè)面描述信息;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。router.replaceUrl(options:RouterOptions,mode:RouterMode):Promise<void>:用應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置替換頁(yè)面描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式;返回值類型為Promise<void>,表示異常返回結(jié)果。router.replaceUrl(options:RouterOptions,mode:RouterMode,callback:AsyncCallback<void>):void:用應(yīng)用內(nèi)的某個(gè)頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面。options參數(shù)用于設(shè)置替換頁(yè)面描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。倪紅軍制作5.2.3頁(yè)面路由3.命名路由頁(yè)面的跳轉(zhuǎn)router.pushNamedRoute(options:NamedRouterOptions):Promise<void>:跳轉(zhuǎn)到指定的命名路由頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面路由描述信息,NamedRouterOptions類型的參數(shù)及功能說明如上表所示;返回值類型為Promise<void>,表示異常返回結(jié)果。router.pushNamedRoute(options:NamedRouterOptions,callback:AsyncCallback<void>):void:跳轉(zhuǎn)到指定的命名路由頁(yè)面。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面路由描述信息;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。倪紅軍制作5.2.3頁(yè)面路由例如,點(diǎn)擊范例5-4中的“返回”按鈕,用命名路由頁(yè)面的跳轉(zhuǎn)方式跳轉(zhuǎn)到注冊(cè)頁(yè)面的步驟如下。倪紅軍制作5.2.3頁(yè)面路由3.命名路由頁(yè)面的跳轉(zhuǎn)router.pushNamedRoute(options:NamedRouterOptions,mode:RouterMode):Promise<void>:跳轉(zhuǎn)到指定的命名路由頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面路由描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式;返回值類型為Promise<void>,表示異常返回結(jié)果。router.pushNamedRoute(options:NamedRouterOptions,mode:RouterMode,callback:AsyncCallback<void>):void:跳轉(zhuǎn)到指定的命名路由頁(yè)面。options參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面路由描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。倪紅軍制作5.2.3頁(yè)面路由4.命名路由頁(yè)面替換當(dāng)前頁(yè)面router.replaceNamedRoute(options:NamedRouterOptions):Promise<void>:用指定的命名路由頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置命名路由替換頁(yè)面描述信息;返回值類型為Promise<void>,表示異常返回結(jié)果。router.replaceNamedRoute(options:NamedRouterOptions,callback:AsyncCallback<void>):void:用指定的命名路由頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面。options參數(shù)用于設(shè)置命名路由替換頁(yè)面描述信息;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。router.replaceNamedRoute(options:NamedRouterOptions,mode:RouterMode):Promise<void>:用指定的命名路由頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面,結(jié)果以Promise形式返回。options參數(shù)用于設(shè)置命名路由替換頁(yè)面描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式;返回值類型為Promise<void>,表示異常返回結(jié)果。router.replaceNamedRoute(options:NamedRouterOptions,mode:RouterMode,callback:AsyncCallback<void>):void:用指定的命名路由頁(yè)面替換當(dāng)前頁(yè)面,并銷毀被替換的頁(yè)面。options參數(shù)用于設(shè)置命名路由替換頁(yè)面描述信息;mode參數(shù)用于設(shè)置跳轉(zhuǎn)頁(yè)面使用的模式;callback參數(shù)用于設(shè)置異常響應(yīng)回調(diào)事件。倪紅軍制作5.2.3頁(yè)面路由5.返回上一頁(yè)面或指定頁(yè)面router.back(options?:RouterOptions):void:返回上一頁(yè)面或指定的頁(yè)面。options參數(shù)用于設(shè)置返回頁(yè)面描述信息,RouterOptions類型對(duì)象中的url參數(shù)用于指定路由跳轉(zhuǎn)時(shí)會(huì)返回到的頁(yè)面,但是如果頁(yè)面棧里沒有該url參數(shù)指定的頁(yè)面,則不響應(yīng);如果未設(shè)置url參數(shù),則返回到上一頁(yè)。例如,點(diǎn)擊圖5.4中的“返回”按鈕,返回注冊(cè)頁(yè)面也可用如下代碼實(shí)現(xiàn)。倪紅軍制作5.2.3頁(yè)面路由6.其他接口

router.clear():void:清空頁(yè)面棧中的所有歷史頁(yè)面,僅保留當(dāng)前頁(yè)面作為棧頂頁(yè)面。router.getLength():string:獲取當(dāng)前頁(yè)面棧內(nèi)的頁(yè)面數(shù)量,頁(yè)面棧支持的最大值為32。router.getState():RouteState:獲取當(dāng)前頁(yè)面的狀態(tài)信息,返回值類型為RouteState,RouteState類型的參數(shù)及功能說明如表所示。倪紅軍制作5.2.3頁(yè)面路由6.其他接口router.showAlertBeforeBackPage(options:EnableAlertOptions):void:開啟頁(yè)面返回的詢問對(duì)話框。options參數(shù)用于設(shè)置文本彈窗描述信息,EnableAlertOptions類型對(duì)象中的message參數(shù)用于指定詢問對(duì)話框內(nèi)容。例如,在范例5-4的基礎(chǔ)上增加按下“后退”鍵彈出如圖所示的詢問對(duì)話框功能,只要在@Entry裝飾的自定義組件中添加如下代碼即可。倪紅軍制作5.2.4UIAbility組件UIAbility繼承自Ability,它是一種主要用于與用戶交互,并包含UI的應(yīng)用組件;它是系統(tǒng)調(diào)度的基本單元,為應(yīng)用提供繪制UI的窗口。一個(gè)應(yīng)用可以包含一個(gè)或多個(gè)UIAbility組件,每一個(gè)UIAbility組件實(shí)例都會(huì)在最近任務(wù)列表中顯示一個(gè)對(duì)應(yīng)的任務(wù)。1.UIAbility的生命周期當(dāng)用戶打開、切換和返回到對(duì)應(yīng)應(yīng)用時(shí),應(yīng)用中的UIAbility實(shí)例會(huì)在其生命周期的不同狀態(tài)之間轉(zhuǎn)換。UIAbility組件的生命周期包括Create、Foreground、Background、Destroy四個(gè)狀態(tài),WindowStageCreate和WindowStageDestroy為窗口管理器(WindowStage)在UIAbility中管理UI界面功能的兩個(gè)狀態(tài),從而實(shí)現(xiàn)UIAbility與窗口之間的弱耦合。UIAbility和WindowStage的生命周期狀態(tài)切換函數(shù)回調(diào)流程如圖所示。倪紅軍制作5.2.4UIAbility組件2.UIAbility的啟動(dòng)模式(1)singletonsingletonyn啟動(dòng)模式是默認(rèn)的啟動(dòng)模式,每當(dāng)在該模式下調(diào)用startAbility()啟動(dòng)一個(gè)UIAbility時(shí),如果應(yīng)用進(jìn)程中已經(jīng)存在該類型的UIAbility實(shí)例,則系統(tǒng)會(huì)復(fù)用該實(shí)例,而不會(huì)創(chuàng)建新的UIAbility實(shí)例。也就是說,系統(tǒng)中只會(huì)存在唯一一個(gè)該UIAbility實(shí)例,即在最近任務(wù)列表中只存在一個(gè)該類型的UIAbility實(shí)例。如果應(yīng)用的UIAbility實(shí)例已經(jīng)創(chuàng)建,并且在module.json5配置文件中將“l(fā)aunchType”字段配置為“singleton”模式,則說明該UIAbility實(shí)例工作在單實(shí)例模式。(2)multitonmultiton啟動(dòng)模式是多實(shí)例模式,在該模式下只要調(diào)用startAbility()啟動(dòng)UIAbility,都會(huì)在應(yīng)用進(jìn)程中創(chuàng)建一個(gè)新的該類型UIAbility實(shí)例。即在最近任務(wù)列表中可以看到有多個(gè)該類型的UIAbility實(shí)例。只要在module.json5配置文件中將“l(fā)aunchType”字段配置為“multiton”模式,則說明該UIAbility實(shí)例工作在多實(shí)例模式。倪紅軍制作5.2.4UIAbility組件2.UIAbility的啟動(dòng)模式(3)specifiedspecified啟動(dòng)模式是指定實(shí)例模式,該模式是一種特殊的啟動(dòng)模式,通常用于特定場(chǎng)景。例如,文檔編輯應(yīng)用中每次新建文檔希望都能新建一個(gè)文檔實(shí)例,重復(fù)打開一個(gè)已保存的文檔希望打開的都是同一個(gè)文檔實(shí)例。每個(gè)UIAbility實(shí)例都有一個(gè)特定的身份標(biāo)識(shí)Key,每次啟動(dòng)UIAbility時(shí),系統(tǒng)會(huì)根據(jù)該Key來判斷是復(fù)用已存在的特定Key綁定的UIAbility實(shí)例,還是創(chuàng)建一個(gè)新的實(shí)例。即,specified模式允許應(yīng)用在運(yùn)行時(shí)根據(jù)特定的Key決定是否創(chuàng)建新實(shí)例或復(fù)用已有實(shí)例,以便滿足不同的業(yè)務(wù)需求。如果應(yīng)用的UIAbility實(shí)例已經(jīng)創(chuàng)建,并且在module.json5配置文件中將“l(fā)aunchType”字段配置為“specified”模式,則說明該UIAbility實(shí)例工作在指定實(shí)例模式。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(1)啟動(dòng)UIAbilityUIAbilityContext.startAbility(want:Want,callback:AsyncCallback<void>):void:?jiǎn)?dòng)Ability。want參數(shù)用于設(shè)置啟動(dòng)Ability的描述信息,Want類型的參數(shù)及功能說明如表所示;callback參數(shù)用于設(shè)置返回啟動(dòng)結(jié)果后的響應(yīng)回調(diào)事件。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(1)啟動(dòng)UIAbility【范例5-5】設(shè)計(jì)如上圖所示的商城注冊(cè)頁(yè)面,在界面上輸入用戶名、密碼和選擇性別后,點(diǎn)擊“注冊(cè)”按鈕,跳轉(zhuǎn)至如下圖所示的注冊(cè)確認(rèn)頁(yè)面。使用啟動(dòng)應(yīng)用內(nèi)的UIAbility方式實(shí)現(xiàn)上述功能的步驟如下。第一步,創(chuàng)建文件名為L(zhǎng)oginPage.ets的商城注冊(cè)頁(yè)面,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(1)啟動(dòng)UIAbility【范例5-5】設(shè)計(jì)如上圖所示的商城注冊(cè)頁(yè)面,在界面上輸入用戶名、密碼和選擇性別后,點(diǎn)擊“注冊(cè)”按鈕,跳轉(zhuǎn)至如下圖所示的注冊(cè)確認(rèn)頁(yè)面。使用啟動(dòng)應(yīng)用內(nèi)的UIAbility方式實(shí)現(xiàn)上述功能的步驟如下。第一步,創(chuàng)建文件名為L(zhǎng)oginPage.ets的商城注冊(cè)頁(yè)面,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(1)啟動(dòng)UIAbility【范例5-5】設(shè)計(jì)如上圖所示的商城注冊(cè)頁(yè)面,在界面上輸入用戶名、密碼和選擇性別后,點(diǎn)擊“注冊(cè)”按鈕,跳轉(zhuǎn)至如下圖所示的注冊(cè)確認(rèn)頁(yè)面。使用啟動(dòng)應(yīng)用內(nèi)的UIAbility方式實(shí)現(xiàn)上述功能的步驟如下。第二步,創(chuàng)建文件名為L(zhǎng)oginAbility.ts的UIAbility,并設(shè)置其加載的頁(yè)面文件為第一步創(chuàng)建的LoginPage.ets,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(1)啟動(dòng)UIAbility【范例5-5】設(shè)計(jì)如上圖所示的商城注冊(cè)頁(yè)面,在界面上輸入用戶名、密碼和選擇性別后,點(diǎn)擊“注冊(cè)”按鈕,跳轉(zhuǎn)至如下圖所示的注冊(cè)確認(rèn)頁(yè)面。使用啟動(dòng)應(yīng)用內(nèi)的UIAbility方式實(shí)現(xiàn)上述功能的步驟如下。第三步,創(chuàng)建文件名為DetailPage.ets的注冊(cè)確認(rèn)頁(yè)面,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(2)啟動(dòng)UIAbility并獲取返回結(jié)果UIAbilityContext.startAbilityForResult(want:Want,callback:AsyncCallback<AbilityResult>):void:?jiǎn)?dòng)Ability。want參數(shù)用于設(shè)置啟動(dòng)Ability的描述信息;callback參數(shù)用于設(shè)置返回啟動(dòng)結(jié)果后的響應(yīng)回調(diào)事件,AbilityResult類型的參數(shù)及功能說明如表所示。UIAbilityContext.startAbilityForResult(want:Want,options?:StartOptions):Promise<AbilityResult>:?jiǎn)?dòng)Ability,結(jié)果以Promise形式返回。UIAbilityContext.terminateSelfWithResult(parameter:AbilityResult,callback:AsyncCallback<void>):void:停止當(dāng)前的Ability。parameter參數(shù)用于設(shè)置startAbilityForResult()接口調(diào)用者的相關(guān)信息;callback參數(shù)用于設(shè)置返回停止結(jié)果后的響應(yīng)回調(diào)事件。UIAbilityContext.terminateSelfWithResult(parameter:AbilityResult):Promise<void>:停止當(dāng)前的Ability,結(jié)果以Promise形式返回。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(2)啟動(dòng)UIAbility并獲取返回結(jié)果【范例5-6】在范例5-5的基礎(chǔ)上增加如圖所示的注冊(cè)結(jié)果提示信息,即點(diǎn)擊注冊(cè)確認(rèn)頁(yè)面上的“確認(rèn)”按鈕,返回商城注冊(cè)頁(yè)面,并在下方顯示“注冊(cè)結(jié)果:確認(rèn)注冊(cè)信息!”,點(diǎn)擊注冊(cè)確認(rèn)頁(yè)面上的“取消”按鈕,返回商城注冊(cè)頁(yè)面,并在下方顯示“注冊(cè)結(jié)果:取消注冊(cè)確認(rèn)!”。第一步,打開LoginPage.ets的商城注冊(cè)頁(yè)面文件,在范例5-5實(shí)現(xiàn)該頁(yè)面代碼的基礎(chǔ)上添加如下代碼。倪紅軍制作5.2.4UIAbility組件3.UIAbility組件間的交互(2)啟動(dòng)UIAbility并獲取返回結(jié)果【范例5-6】在范例5-5的基礎(chǔ)上增加如圖所示的注冊(cè)結(jié)果提示信息,即點(diǎn)擊注冊(cè)確認(rèn)頁(yè)面上的“確認(rèn)”按鈕,返回商城注冊(cè)頁(yè)面,并在下方顯示“注冊(cè)結(jié)果:確認(rèn)注冊(cè)信息!”,點(diǎn)擊注冊(cè)確認(rèn)頁(yè)面上的“取消”按鈕,返回商城注冊(cè)頁(yè)面,并在下方顯示“注冊(cè)結(jié)果:取消注冊(cè)確認(rèn)!”。第二步,打開DetailPage.ets的商城注冊(cè)頁(yè)面文件,在范例5-5實(shí)現(xiàn)該頁(yè)面代碼的基礎(chǔ)上添加如下代碼。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口用戶首選項(xiàng)(Preferences)提供了輕量級(jí)配置數(shù)據(jù)的持久化能力,并支持訂閱數(shù)據(jù)變化的通知能力。用戶首選項(xiàng)為應(yīng)用提供key-value鍵值對(duì)類型的數(shù)據(jù)處理能力,支持應(yīng)用對(duì)數(shù)據(jù)進(jìn)行輕量級(jí)的存儲(chǔ)、修改及查詢。數(shù)據(jù)存儲(chǔ)形式為鍵值對(duì),鍵的類型為字符串型;值的存儲(chǔ)數(shù)據(jù)類型包括數(shù)字型、字符型、布爾型以及它們的數(shù)組類型。ArkTS開發(fā)框架的“@ohos.data.preferences”模塊中提供了用戶首選項(xiàng)存儲(chǔ)與訪問接口來實(shí)現(xiàn)對(duì)存儲(chǔ)對(duì)象相關(guān)的數(shù)據(jù)操作,在使用“@ohos.data.preferences”模塊相關(guān)功能之前,需要先用如下代碼導(dǎo)入該模塊,倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口1.獲取Preferences實(shí)例dataPreferences.getPreferences(context:Context,name:string,callback:AsyncCallback<Preferences>):void:獲取Preferences實(shí)例。context參數(shù)用于設(shè)置應(yīng)用上下文;name參數(shù)用于設(shè)置Preferences實(shí)例存儲(chǔ)對(duì)象的名稱;callback參數(shù)用于設(shè)置獲取返回結(jié)果后的響應(yīng)回調(diào)事件,當(dāng)獲取實(shí)例成功,err為undefined,并返回Preferences實(shí)例,否則err為錯(cuò)誤對(duì)象。dataPreferences.getPreferences(context:Context,name:string):Promise<Preferences>:獲取Preferences實(shí)例。context參數(shù)用于設(shè)置應(yīng)用上下文;name參數(shù)用于設(shè)置Preferences實(shí)例的名稱;返回值類型為Promise<Preferences>,表示返回Preferences實(shí)例。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口1.獲取Preferences實(shí)例【范例5-7】獲取Preferences實(shí)例preferences,其存儲(chǔ)對(duì)象名稱為loginInfo,如果獲取失敗,輸出失敗信息,否則繼續(xù)執(zhí)行其他操作。實(shí)現(xiàn)代碼如下所示:倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口2.刪除Preferences實(shí)例dataPreferences.deletePreferences(context:Context,name:string,callback:AsyncCallback<void>):void:從內(nèi)存中刪除Preferences實(shí)例。context參數(shù)用于設(shè)置應(yīng)用上下文;name參數(shù)用于設(shè)置Preferences實(shí)例存儲(chǔ)對(duì)象的名稱;callback參數(shù)用于設(shè)置獲取返回結(jié)果后的響應(yīng)回調(diào)事件,當(dāng)刪除實(shí)例成功,err為undefined,否則err為錯(cuò)誤對(duì)象。dataPreferences.deletePreferences(context:Context,name:string):Promise<void>:從內(nèi)存中刪除Preferences實(shí)例。context參數(shù)用于設(shè)置應(yīng)用上下文;name參數(shù)用于設(shè)置Preferences實(shí)例的名稱;返回值類型為Promise<void>。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口3.Preferences實(shí)例的數(shù)據(jù)操作put(key:string,value:ValueType,callback:AsyncCallback<void>):void:將數(shù)據(jù)寫入Preferences實(shí)例,通過flush將Preferences實(shí)例數(shù)據(jù)存儲(chǔ)。key參數(shù)用于設(shè)置待寫入值的鍵(key)名稱;value參數(shù)用于設(shè)置寫入值;callback參數(shù)用于設(shè)置返回結(jié)果回調(diào)事件,如果寫入成功,err為undefined;否則err為錯(cuò)誤對(duì)象。put(key:string,value:ValueType):Promise<void>:將數(shù)據(jù)寫入Preferences實(shí)例。key參數(shù)用于設(shè)置待寫入值的鍵(key)名稱;value參數(shù)用于設(shè)置寫入值;返回值類型為Promise<void>?!痉独?-8】在范例5-7的基礎(chǔ)上,在名稱為loginInfo的Preferences實(shí)例中寫入用戶名信息鍵值對(duì)(key=userName,value=nnutc)和密碼信息鍵值對(duì)(key=userPwd,value=nnutc),實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口3.Preferences實(shí)例的數(shù)據(jù)操作get(key:string,defValue:ValueType,callback:AsyncCallback<ValueType>):void:獲取鍵(key)對(duì)應(yīng)的值,如果值為null或非默認(rèn)值類型,則返回默認(rèn)數(shù)據(jù)defValue。key參數(shù)用于設(shè)置待獲取值的鍵(key)名稱;defValue參數(shù)用于設(shè)置默認(rèn)返回值;callback參數(shù)用于設(shè)置返回結(jié)果回調(diào)事件,如果獲取成功,err為undefined,data為鍵對(duì)應(yīng)的值;否則err為錯(cuò)誤對(duì)象。get(key:string,defValue:ValueType):Promise<ValueType>:獲取鍵(key)對(duì)應(yīng)的值。返回值類型為Promise<ValueType>,表示返回鍵對(duì)應(yīng)的值?!痉独?-9】在范例5-8的基礎(chǔ)上,在名稱為loginInfo的Preferences實(shí)例中讀出用戶名信息和密碼信息,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口3.Preferences實(shí)例的數(shù)據(jù)操作getAll(callback:AsyncCallback<Object>):void:獲取含有所有鍵值的Object對(duì)象;callback參數(shù)用于設(shè)置返回結(jié)果回調(diào)事件。如果獲取成功,err為undefined,value為含有所有鍵值的Object對(duì)象;否則err為錯(cuò)誤對(duì)象。getAll():Promise<Object>:獲取含有所有鍵值的Object對(duì)象。返回值類型為Promise<Object>,表示返回所有鍵值的Object對(duì)象。has(key:string,callback:AsyncCallback<boolean>):void:檢查Preferences實(shí)例是否包含key參數(shù)存儲(chǔ)的鍵值對(duì)。key參數(shù)用于設(shè)置待檢查的鍵(key)名稱;callback參數(shù)用于設(shè)置返回結(jié)果回調(diào)事件,如果包含key參數(shù)存儲(chǔ)的鍵值對(duì),則返回true,否則返回false。has(key:string):Promise<boolean>:檢查Preferences實(shí)例是否包含key參數(shù)存儲(chǔ)的鍵值對(duì)。key參數(shù)用于設(shè)置待檢查的鍵(key)名稱。返回值類型為Promise<boolean>。delete(key:string,callback:AsyncCallback<void>):void:刪除Preferences實(shí)例中名稱為key參數(shù)的鍵值對(duì)。key參數(shù)用于設(shè)置待刪除的鍵(key)名稱;callback參數(shù)用于設(shè)置返回結(jié)果回調(diào)事件,如果刪除成功,err為undefined;否則err為錯(cuò)誤對(duì)象。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口3.Preferences實(shí)例的數(shù)據(jù)操作delete(key:string):Promise<void>:刪除Preferences實(shí)例中名稱為key參數(shù)的鍵值對(duì)。key參數(shù)用于設(shè)置待刪除的鍵(key)名稱。返回值類型為Promise<void>。flush(callback:AsyncCallback<void>):void:將當(dāng)前Preferences實(shí)例中的數(shù)據(jù)存儲(chǔ)到用戶首選項(xiàng)的數(shù)據(jù)文件中。callback參數(shù)用于設(shè)置返回結(jié)果回調(diào)事件,如果保存成功,err為undefined;否則err為錯(cuò)誤對(duì)象。。flush():Promise<void>:將當(dāng)前Preferences實(shí)例中的數(shù)據(jù)存儲(chǔ)到用戶首選項(xiàng)的數(shù)據(jù)文件中。返回值類型為Promise<void>。clear(callback:AsyncCallback<void>):void:將當(dāng)前Preferences實(shí)例中的數(shù)據(jù)存儲(chǔ)對(duì)象全部清除。callback參數(shù)用于設(shè)置返回結(jié)果回調(diào)事件,如果清除成功,err為undefined;否則err為錯(cuò)誤對(duì)象。。clear():Promise<void>:將當(dāng)前Preferences實(shí)例中的數(shù)據(jù)存儲(chǔ)對(duì)象全部清除。返回值類型為Promise<void>。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口3.Preferences實(shí)例的數(shù)據(jù)操作on(type:'change',callback:Callback<{key:string}>):void:訂閱數(shù)據(jù)變更,訂閱的鍵(key)值發(fā)生變更后,在執(zhí)行flush方法后,觸發(fā)callback參數(shù)設(shè)置的事件。type參數(shù)用于設(shè)置事件類型,此處為'change'固定值,表示數(shù)據(jù)變更。callback參數(shù)用于設(shè)置需要訂閱數(shù)據(jù)變量對(duì)象實(shí)例的回調(diào)事件。off(type:'change',callback?:Callback<{key:string}>):void:取消訂閱數(shù)據(jù)變更。type參數(shù)用于設(shè)置事件類型,此處為'change'固定值,表示數(shù)據(jù)變更。callback參數(shù)用于設(shè)置需要取消訂閱數(shù)據(jù)變量對(duì)象實(shí)例的回調(diào)事件。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口【范例5-10】設(shè)計(jì)一個(gè)如圖所示的登錄頁(yè)面。當(dāng)?shù)卿涰?yè)面加載時(shí),首先讀取由Preferences實(shí)例保存的輕量級(jí)數(shù)據(jù),如果數(shù)據(jù)中存儲(chǔ)“是否保存”復(fù)選框狀態(tài)信息的鍵值為true,則說明前一次登錄時(shí)用戶選中了“是否保存”復(fù)選框,并將“用戶名稱”和“用戶密碼”信息顯示在頁(yè)面上對(duì)應(yīng)輸入框中。實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口【范例5-10】設(shè)計(jì)一個(gè)如圖所示的登錄頁(yè)面。當(dāng)用戶點(diǎn)擊“登錄”按鈕時(shí),向以preferences命名的Preferences實(shí)例存儲(chǔ)對(duì)象loginInfo中寫入用戶名、用戶密碼和是否保存復(fù)選框選中狀態(tài)等信息,本范例自定義的writeLoginKey()函數(shù)實(shí)現(xiàn),詳細(xì)代碼如下所示。倪紅軍制作5.2.5用戶首選項(xiàng)存儲(chǔ)與訪問接口【范例5-10】設(shè)計(jì)一個(gè)如圖所示的登錄頁(yè)面。從圖可以看出,整個(gè)頁(yè)面按Column方式布局,用戶名和密碼輸入框由TextInput組件實(shí)現(xiàn)、是否保存復(fù)選框由CheckBox組件實(shí)現(xiàn)、登錄和重置按鈕由Button組件實(shí)現(xiàn),詳細(xì)代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)1.需求描述阿森斯失眠量表一共包含8個(gè)問題,如表所示。每個(gè)問題的答案選項(xiàng)分值分別為0、1、2、3,若所有問題的得分之和小于4,則表示測(cè)試者睡眠質(zhì)量很好;若得分之和超過6

,則表示睡眠質(zhì)量較差。該測(cè)量表目前常用于公眾的睡眠質(zhì)量狀況調(diào)查,并了解測(cè)試者的睡眠質(zhì)量。根據(jù)阿森斯失眠量表設(shè)計(jì)并實(shí)現(xiàn)睡眠質(zhì)量測(cè)試系統(tǒng),該系統(tǒng)需要實(shí)現(xiàn)以下三方面功能。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)1.需求描述如果用戶在終端設(shè)備沒有運(yùn)行過本系統(tǒng)或者沒有保存過測(cè)試結(jié)果,則顯示如左圖所示啟動(dòng)頁(yè)面;否則顯示如右圖所示啟動(dòng)頁(yè)面。點(diǎn)擊左圖的“開始”按鈕或點(diǎn)擊右圖的“重新測(cè)試”按鈕,切換至如圖所示的問卷調(diào)查頁(yè)面。用戶點(diǎn)擊最后一個(gè)調(diào)查問題的“提交”文本按鈕,或單擊“查看報(bào)告”按鈕,切換至如圖所示的報(bào)告頁(yè)面。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(1)啟動(dòng)頁(yè)面打開Chap05項(xiàng)目,右擊“Chap05”文件夾,選擇“New→Module...”菜單項(xiàng)創(chuàng)建名為“health”的模塊,此時(shí)在“health/src/main/etc/pages”文件夾下會(huì)默認(rèn)生成“index.ets”頁(yè)面文件。睡眠質(zhì)量測(cè)試系統(tǒng)應(yīng)用啟動(dòng)時(shí),首先加載index.ets頁(yè)面,并通過用戶首選項(xiàng)存儲(chǔ)與訪問機(jī)制從終端上讀出Preferences實(shí)例存儲(chǔ)對(duì)象reportInfo,reportInfo中保存了分?jǐn)?shù)值(score)和存儲(chǔ)報(bào)告狀態(tài)(isSaved)信息。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(1)啟動(dòng)頁(yè)面打開Chap05項(xiàng)目,右擊“Chap05”文件夾,選擇“New→Module...”菜單項(xiàng)創(chuàng)建名為“health”的模塊,此時(shí)在“health/src/main/etc/pages”文件夾下會(huì)默認(rèn)生成“index.ets”頁(yè)面文件。睡眠質(zhì)量測(cè)試系統(tǒng)應(yīng)用啟動(dòng)時(shí),首先加載index.ets頁(yè)面,并通過用戶首選項(xiàng)存儲(chǔ)與訪問機(jī)制從終端上讀出Preferences實(shí)例存儲(chǔ)對(duì)象reportInfo,reportInfo中保存了分?jǐn)?shù)值(score)和存儲(chǔ)報(bào)告狀態(tài)(isSaved)信息。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(2)問卷調(diào)查頁(yè)面右擊“health/src/main/ets/pages”文件夾,選擇“New→Page”菜單選項(xiàng)創(chuàng)建名為“Question.ets”的問卷調(diào)查頁(yè)面。問卷題目的數(shù)據(jù)結(jié)構(gòu)及功能說明如表所示。具體實(shí)現(xiàn)步驟如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(2)問卷調(diào)查頁(yè)面第一步,定義數(shù)組常量questions用于保存8個(gè)問卷題目信息,包含題目?jī)?nèi)容、答案選項(xiàng)、用戶答案數(shù)組和用戶答案。具體代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(2)問卷調(diào)查頁(yè)面第二步,用Stepper和StepperItem顯示數(shù)組中的每個(gè)元素,并按照?qǐng)D布局題目?jī)?nèi)容、答案選項(xiàng)等信息,具體代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(2)問卷調(diào)查頁(yè)面第二步,用Stepper和StepperItem顯示數(shù)組中的每個(gè)元素,并按照?qǐng)D布局題目?jī)?nèi)容、答案選項(xiàng)等信息,具體代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(2)問卷調(diào)查頁(yè)面第二步,用Stepper和StepperItem顯示數(shù)組中的每個(gè)元素,并按照?qǐng)D布局題目?jī)?nèi)容、答案選項(xiàng)等信息,具體代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(3)報(bào)告頁(yè)面右擊“health/src/main/ets/pages”文件夾,選擇“New→Page”菜單選項(xiàng)創(chuàng)建名為“Report.ets”的報(bào)告頁(yè)面。首先在報(bào)告頁(yè)面定義1個(gè)用于存放睡眠質(zhì)量結(jié)論的resultTitle數(shù)組常量和1個(gè)用于存放專業(yè)性意見的resultInfo數(shù)組常量。具體代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(3)報(bào)告頁(yè)面然后,根據(jù)分值value和阿森斯失眠算法,定義1個(gè)計(jì)算睡眠質(zhì)量結(jié)論和專業(yè)性意見在resultTitle和resultInfo數(shù)組中的元素下標(biāo)的自定義函數(shù)judge(),具體代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(3)報(bào)告頁(yè)面最后,當(dāng)頁(yè)面加載時(shí)根據(jù)問卷調(diào)查頁(yè)面(Question.ets)或啟動(dòng)頁(yè)面(Index.ets)傳遞的score參數(shù)值,調(diào)用judge()函數(shù)計(jì)算出睡眠質(zhì)量結(jié)論在resultTitle和resultInfo數(shù)組中的元素下標(biāo),并根據(jù)元素下標(biāo)值將睡眠質(zhì)量結(jié)論和專業(yè)性意見顯示在頁(yè)面上,具體代碼如下所示。倪紅軍制作5.2.6案例:睡眠質(zhì)量測(cè)試系統(tǒng)2.實(shí)現(xiàn)流程(3)報(bào)告頁(yè)面最后,當(dāng)頁(yè)面加載時(shí)根據(jù)問卷調(diào)查頁(yè)面(Question.ets)或啟動(dòng)頁(yè)面(Index.ets)傳遞的score參數(shù)值,調(diào)用judge()函數(shù)計(jì)算出睡眠質(zhì)量結(jié)論在resultTitle和resultInfo數(shù)組中的元素下標(biāo),并根據(jù)元素下標(biāo)值將睡眠質(zhì)量結(jié)論和專業(yè)性意見顯示在頁(yè)面上,具體代碼如下所示。倪紅軍制作5.3備忘錄的設(shè)計(jì)與實(shí)現(xiàn)本節(jié)要點(diǎn)1.掌握CustomDialog組件的使用方法和應(yīng)用場(chǎng)景2.掌握List、ListItem和ListItemGroup組件的使用方法和應(yīng)用場(chǎng)景3.掌握應(yīng)用文件存儲(chǔ)與訪問接口中文件操作方法和應(yīng)用場(chǎng)景4.掌握備忘錄的實(shí)現(xiàn)方法倪紅軍制作5.3.1CustomDialog組件CustomDialog組件(自定義彈窗組件)用于自定義頁(yè)面上的彈出對(duì)話框,可用于警告、廣告、軟件更新等與用戶交互響應(yīng)操作。從APIVersion7開始,ArkTS框架中提供了CustomDialogController類來配置自定義彈窗的參數(shù),其接口格式如下所示。value參數(shù)用于設(shè)置自定義彈窗的參數(shù)。CustomDialogControllerOptions類型參數(shù)及功能說明如表所示。倪紅軍制作5.3.1CustomDialog組件CustomDialogController類對(duì)象僅在作為@CustomDialog和@Componentstruct的成員變量、并且在@Componentstruct內(nèi)部定義時(shí)賦值才有效。CustomDialogController類對(duì)象提供了如表所示的方法控制自定義彈窗的顯示與關(guān)閉。倪紅軍制作5.3.1CustomDialog組件【范例5-11】點(diǎn)擊如上圖所示頁(yè)面上的“帳號(hào)注冊(cè)”按鈕,彈出“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框;點(diǎn)擊對(duì)話框上的“立即獲取”文本,用文本提示框彈出驗(yàn)證碼;在驗(yàn)證碼輸入框中輸入驗(yàn)證碼,點(diǎn)擊“確定”按鈕,在“賬號(hào)注冊(cè)”按鈕下方顯示如下圖所示的信息,點(diǎn)擊“取消”按鈕,“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框關(guān)閉。倪紅軍制作5.3.1CustomDialog組件【范例5-11】點(diǎn)擊如上圖所示頁(yè)面上的“帳號(hào)注冊(cè)”按鈕,彈出“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框;點(diǎn)擊對(duì)話框上的“立即獲取”文本,用文本提示框彈出驗(yàn)證碼;在驗(yàn)證碼輸入框中輸入驗(yàn)證碼,點(diǎn)擊“確定”按鈕,在“賬號(hào)注冊(cè)”按鈕下方顯示如下圖所示的信息,點(diǎn)擊“取消”按鈕,“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框關(guān)閉。倪紅軍制作5.3.1CustomDialog組件【范例5-11】點(diǎn)擊如上圖所示頁(yè)面上的“帳號(hào)注冊(cè)”按鈕,彈出“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框;點(diǎn)擊對(duì)話框上的“立即獲取”文本,用文本提示框彈出驗(yàn)證碼;在驗(yàn)證碼輸入框中輸入驗(yàn)證碼,點(diǎn)擊“確定”按鈕,在“賬號(hào)注冊(cè)”按鈕下方顯示如下圖所示的信息,點(diǎn)擊“取消”按鈕,“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框關(guān)閉。倪紅軍制作5.3.1CustomDialog組件【范例5-12】在范例5-11的基礎(chǔ)上,給彈出“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框添加動(dòng)畫效果,并設(shè)置蒙層顏色為綠色、不允許點(diǎn)擊遮障層退出。用單獨(dú)的ets文件創(chuàng)建自定義“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”彈窗對(duì)話框組件實(shí)現(xiàn)上述功能的步驟如下。第一步,在“src/main/ets/pages”文件夾下創(chuàng)建common文件夾,右擊common文件夾,選擇“New→ArkTSFile”菜單命令,創(chuàng)建MyDialog.ets文件。第二步,打開MyDialog.ets文件,輸入如下代碼。倪紅軍制作5.3.1CustomDialog組件【范例5-12】在范例5-11的基礎(chǔ)上,給彈出“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”對(duì)話框添加動(dòng)畫效果,并設(shè)置蒙層顏色為綠色、不允許點(diǎn)擊遮障層退出。用單獨(dú)的ets文件創(chuàng)建自定義“請(qǐng)輸入動(dòng)態(tài)驗(yàn)證碼”彈窗對(duì)話框組件實(shí)現(xiàn)上述功能的步驟如下。第三步,打開范例5-11中的P5_11.ets文件,輸入如下代碼。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口設(shè)備上應(yīng)用所使用及存儲(chǔ)的數(shù)據(jù)都是以文件、鍵值對(duì)或數(shù)據(jù)庫(kù)等形式保存在一個(gè)應(yīng)用專屬的目錄內(nèi),應(yīng)用專屬目錄稱為應(yīng)用文件目錄。應(yīng)用文件目錄中以不同文件格式存放數(shù)據(jù)的文件稱為應(yīng)用文件。應(yīng)用文件的所有者為應(yīng)用本身,包括應(yīng)用安裝文件、應(yīng)用資源文件和應(yīng)用緩存文件等。應(yīng)用文件目錄與應(yīng)用運(yùn)行必須使用的系統(tǒng)文件所在目錄統(tǒng)稱為應(yīng)用沙箱目錄。應(yīng)用沙箱目錄為應(yīng)用可見的目錄范圍;但系統(tǒng)文件及其目錄對(duì)于應(yīng)用來說是只讀的,所以應(yīng)用僅能根據(jù)目錄的使用規(guī)范和注意事項(xiàng)選擇應(yīng)用文件目錄下的子目錄保存數(shù)據(jù)/文件。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口1.應(yīng)用沙箱目錄應(yīng)用沙箱是一種以安全保護(hù)為目的的隔離機(jī)制,避免數(shù)據(jù)受到惡意路徑穿越訪問。應(yīng)用沙箱目錄就是在這種沙箱保護(hù)機(jī)制下的應(yīng)用可見的目錄范圍。對(duì)于每個(gè)應(yīng)用,系統(tǒng)會(huì)在內(nèi)部存儲(chǔ)空間映射出一個(gè)專屬的應(yīng)用沙箱目錄。在應(yīng)用沙箱目錄中,應(yīng)用僅能看到自己的應(yīng)用文件和應(yīng)用運(yùn)行必需的少量系統(tǒng)文件,而不能被其他應(yīng)用可見。在應(yīng)用沙箱保護(hù)機(jī)制下,應(yīng)用可訪問的文件范圍與方式如圖所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口1.應(yīng)用沙箱目錄普通應(yīng)用視角下看到的應(yīng)用沙箱目錄下某個(gè)文件或某個(gè)具體目錄的路徑稱為應(yīng)用沙箱路徑。一般情況下,開發(fā)者的hdcshell環(huán)境等效于系統(tǒng)進(jìn)程視角,在系統(tǒng)進(jìn)程視角和普通應(yīng)用視角下獲得的真實(shí)物理路徑與應(yīng)用沙箱路徑對(duì)應(yīng)關(guān)系如表所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口2.應(yīng)用文件目錄在應(yīng)用沙箱保護(hù)機(jī)制下,系統(tǒng)會(huì)為每個(gè)應(yīng)用在內(nèi)部存儲(chǔ)空間映射出一個(gè)專屬的應(yīng)用沙箱目錄,應(yīng)用沙箱目錄內(nèi)包含系統(tǒng)文件目錄和應(yīng)用文件目錄。系統(tǒng)文件目錄保存了應(yīng)用運(yùn)行必需的少量系統(tǒng)資源,該目錄對(duì)應(yīng)用來說是只讀的,其可見范圍由系統(tǒng)預(yù)置,開發(fā)者無需關(guān)注。應(yīng)用文件目錄下可以保存和處理應(yīng)用自己的文件,其目錄結(jié)構(gòu)如圖所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口3.ContextContext是應(yīng)用中對(duì)象的上下文,它提供了應(yīng)用的resourceManager(資源管理)、applicationInfo(當(dāng)前應(yīng)用信息)、dir(應(yīng)用文件路徑)、area(文件分區(qū))等基礎(chǔ)信息以及應(yīng)用的一些基本方法。UIAbility組件和各種ExtensionAbility派生類組件都有各自不同的Context類,其繼承關(guān)系如圖所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口3.ContextContext模塊提供了ability或application的上下文的能力,包括訪問特定應(yīng)用程序的資源等。Context類提供了支持如表所示的屬性。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口3.Context【范例5-13】在頁(yè)面上設(shè)計(jì)“應(yīng)用級(jí)別”和“HAP級(jí)別”兩個(gè)按鈕,點(diǎn)擊“應(yīng)用級(jí)別”按鈕,在控制臺(tái)顯示應(yīng)用級(jí)別的緩存目錄路徑、臨時(shí)目錄路徑、文件目錄路徑、數(shù)據(jù)庫(kù)目錄路徑、preferences目錄路徑、安裝包目錄路徑、分布式文件目錄路徑和分區(qū)信息;點(diǎn)擊“HAP級(jí)別”按鈕,在控制臺(tái)顯示HAP級(jí)別的緩存目錄路徑、臨時(shí)目錄路徑、文件目錄路徑、數(shù)據(jù)庫(kù)目錄路徑、preferences目錄路徑、安裝包目錄路徑、分布式文件目錄路徑和分區(qū)信息。實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口3.Context【范例5-13】在頁(yè)面上設(shè)計(jì)“應(yīng)用級(jí)別”和“HAP級(jí)別”兩個(gè)按鈕,點(diǎn)擊“應(yīng)用級(jí)別”按鈕,在控制臺(tái)顯示應(yīng)用級(jí)別的緩存目錄路徑、臨時(shí)目錄路徑、文件目錄路徑、數(shù)據(jù)庫(kù)目錄路徑、preferences目錄路徑、安裝包目錄路徑、分布式文件目錄路徑和分區(qū)信息;點(diǎn)擊“HAP級(jí)別”按鈕,在控制臺(tái)顯示HAP級(jí)別的緩存目錄路徑、臨時(shí)目錄路徑、文件目錄路徑、數(shù)據(jù)庫(kù)目錄路徑、preferences目錄路徑、安裝包目錄路徑、分布式文件目錄路徑和分區(qū)信息。實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問ArkTS開發(fā)框架的“@ohos.file.fs”模塊中提供了文件基本管理、文件目錄管理、文件信息統(tǒng)計(jì)、文件流式讀寫等基礎(chǔ)文件操作能力。(1)打開文件fs.openSync(path:string,mode?:number):File:以同步方式打開文件。參數(shù)及功能說明如左表所示;返回值類型為File,表示打開的File類型對(duì)象,F(xiàn)ile類型的屬性及功能說明如右表所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(1)打開文件fs.open(path:string,mode:number,callback:AsyncCallback<File>):void:以異步方式打開文件,使用callback形式返回結(jié)果。callback參數(shù)表示異步打開文件之后的回調(diào)。fs.open(path:string,mode?:number):Promise<File>:以異步方式打開文件,使用Promise形式返回結(jié)果。返回值類型為Promise<File>,用于返回打開的File類型對(duì)象。fs.open(path:string,callback:AsyncCallback<File>):void:以只讀模式異步打開文件,使用callback形式返回結(jié)果。callback參數(shù)表示異步打開文件之后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(1)打開文件【范例5-14】設(shè)計(jì)如圖所示頁(yè)面,在文本輸入框中輸入文件名后,點(diǎn)擊“打開文件”按鈕,用異步、讀寫方式打開HAP級(jí)別文件目錄路徑中的該文件,若文件不存在,則創(chuàng)建該文件,并在右側(cè)顯示打開文件的文件描述符。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(2)獲取文件信息fs.statSync(file:string|number):Stat:以同步方式獲取文件信息,file參數(shù)表示文件應(yīng)用沙箱路徑或已打開的文件描述符fd;返回值類型為Stat,表示文件的具體信息,Stat類型對(duì)象的屬性說明右表所示,Stat類型對(duì)象的方法說明見下頁(yè)表所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(2)獲取文件信息fs.statSync(file:string|number):Stat:以同步方式獲取文件信息,file參數(shù)表示文件應(yīng)用沙箱路徑或已打開的文件描述符fd;返回值類型為Stat,表示文件的具體信息,Stat類型對(duì)象的屬性說明見上頁(yè)表所示,Stat類型對(duì)象的方法說明右表所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(2)獲取文件信息fs.stat(file:string|number:Promise<Stat>:以異步方式獲取文件信息,使用Promise形式返回結(jié)果。file參數(shù)表示文件應(yīng)用沙箱路徑或已打開的文件描述符fd;返回值類型為Promise<Stat>,用于返回文件的具體信息。fs.stat(file:string|number,callback:AsyncCallback<Stat>):void:以異步方式獲取文件信息,使用callback形式返回結(jié)果。file參數(shù)表示文件應(yīng)用沙箱路徑或已打開的文件描述符fd,callback參數(shù)表示異步獲取文件信息之后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(3)檢查文件是否存在fs.accessSync(path:string):boolean:以同步方式檢查文件是否存在。參數(shù)及功能說明如表所示;返回值類型為boolean,表示文件是否存在,true表示存在,false表示不存在。fs.access(path:string):Promise<boolean>:以異步方式檢查文件是否存在。參數(shù)及功能說明如表5-26所示;返回值類型為Promise<boolean>,表示文件是否存在。fs.access(path:string,callback:AsyncCallback<boolean>):void:以異步方式檢查文件是否存在,使用callback形式返回結(jié)果。參數(shù)及功能說明如表所示,callback參數(shù)表示檢查文件是否存在后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(3)檢查文件是否存在【范例5-15】在5-14范例圖所示頁(yè)面上增加“檢查文件”按鈕,點(diǎn)擊“檢查文件”按鈕,并在頁(yè)面右側(cè)顯示該文件是否存在,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(4)寫文件fs.writeSync(fd:number,buffer:ArrayBuffer|string,options?:{offset?:number;length?:number;encoding?:string;}):number:以同步方式將數(shù)據(jù)寫入文件。參數(shù)及功能說明如表所示;返回值類型為number,用于返回實(shí)際寫入的長(zhǎng)度。fs.write(fd:number,buffer:ArrayBuffer|string,options?:{offset?:number;length?:number;encoding?:string;}):Promise<number>:以異步方式將數(shù)據(jù)寫入文件,使用Promise形式返回結(jié)果。參數(shù)及功能說明如表所示,返回值類型為Promise<number>,用于返回實(shí)際寫入的長(zhǎng)度。fs.write(fd:number,buffer:ArrayBuffer|string,options?:{offset?:number;length?:number;encoding?:string;},callback:AsyncCallback<number>):void:以異步方式將數(shù)據(jù)寫入文件,使用callback形式返回結(jié)果。fd、buffer和options參數(shù)及功能說明如表所示,callback參數(shù)表示異步將數(shù)據(jù)寫入文件之后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(4)寫文件【范例5-16】在5-14范例所示頁(yè)面上增加“寫入數(shù)據(jù)”按鈕,點(diǎn)擊“寫入數(shù)據(jù)”按鈕,會(huì)向打開的文件中寫入“Hello,OpenHarmony”字符串,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(5)讀文件fs.readSync(fd:number,buffer:ArrayBuffer,options?:{offset?:number;length?:number;}):number:以同步方式從文件讀取數(shù)據(jù)。參數(shù)及功能說明如表所示;返回值類型為number,用于返回實(shí)際讀取的長(zhǎng)度。fs.read(fd:number,buffer:ArrayBuffer,options?:{offset?:number;length?:number;}):Promise<number>:以異步方式從文件讀取數(shù)據(jù),使用Promise形式返回結(jié)果。返回值類型為Promise<number>,用于返回讀取的實(shí)際長(zhǎng)度。fs.read(fd:number,buffer:ArrayBuffer,options?:{offset?:number;length?:number;},callback:AsyncCallback<number>):void:以異步方式從文件讀取數(shù)據(jù),使用callback形式返回結(jié)果。fd、buffer和options參數(shù)及功能說明如表所示,callback參數(shù)表示異步讀取數(shù)據(jù)之后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(5)讀文件【范例5-17】在范例5-14所示頁(yè)面上增加“讀出數(shù)據(jù)”按鈕,點(diǎn)擊“讀出數(shù)據(jù)”按鈕,會(huì)從打開的文件中讀出字符串,并在頁(yè)面右側(cè)顯示讀出的內(nèi)容,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(6)復(fù)制文件fs.copyFileSync(src:string|number,dest:string|number,mode?:number):void:以同步方式復(fù)制文件。參數(shù)及功能說明如表所示。fs.copyFile(src:string|number,dest:string|number,mode?:number):Promise<void>:以異步方式復(fù)制文件,使用Promise形式返回結(jié)果。返回值類型為Promise<void>,用于異步獲取結(jié)果,本調(diào)用將返回空值。fs.copyFile(src:string|number,dest:string|number,mode?:number,callback:AsyncCallbak<void>):void:以異步方式復(fù)制文件,使用callback形式返回結(jié)果。callback參數(shù)表示異步復(fù)制文件之后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(6)復(fù)制文件【范例5-18】在范例5-14所示頁(yè)面上增加“復(fù)制文件”按鈕,點(diǎn)擊“復(fù)制文件”按鈕,會(huì)將打開的文件復(fù)制到HAP級(jí)別的臨時(shí)目錄中,臨時(shí)目錄中的文件名為dest.dat,并在頁(yè)面右側(cè)顯示復(fù)制是否成功,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(7)重命名文件fs.renameSync(oldPath:string,newPath:string):void:以同步方式重命名文件或文件夾。參數(shù)及功能說明如表所示。fs.rename(oldPath:string,newPath:string):Promise<void>:以同步方式重命名文件或文件夾,使用Promise形式返回結(jié)果。參數(shù)及功能說明如表5-31所示,返回值類型為Promise<void>,用于異步獲取結(jié)果,本調(diào)用將返回空值。fs.rename(oldPath:string,newPath:string,callback:AsyncCallback<void>):void:以同步方式重命名文件或文件夾,使用callback形式返回結(jié)果。參數(shù)及功能說明如表5-31所示,callback參數(shù)表示異步重命名文件之后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(7)重命名文件【范例5-19】在范例5-14所示頁(yè)面上增加“重命名文件”按鈕,點(diǎn)擊“重命名文件”按鈕,會(huì)將HAP級(jí)別的臨時(shí)目錄中dest.dat文件改名為newDest.dat,并在頁(yè)面右側(cè)顯示重命名是否成功,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(8)刪除文件fs.unlinkSync(path:string):void:以同步方式刪除文件。參數(shù)及功能說明如表所示。fs.unlink(path:string):Promise<void>:以異步方式刪除文件。返回值類型為Promise<void>,用于異步獲取結(jié)果,本調(diào)用返回空值。fs.unlink(path:string,callback:AsyncCallback<void>):void:以異步方式刪除文件,使用callback形式返回結(jié)果。callback參數(shù)表示異步刪除文件之后的回調(diào)。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(8)刪除文件【范例5-20】在范例5-14所示頁(yè)面上增加“刪除文件”按鈕,點(diǎn)擊“刪除文件”按鈕,會(huì)將HAP級(jí)別的臨時(shí)目錄中的newDest.dat文件刪除,并在頁(yè)面右側(cè)顯示重命名是否成功,實(shí)現(xiàn)代碼如下所示。倪紅軍制作5.3.2應(yīng)用文件存儲(chǔ)與訪問接口4.應(yīng)用文件訪問(9)列出文件清單fs.listFileSync(path:string,options?:{recursion?:boolean;listNum?:number;filter?:Filter;})

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論