OpenHarmony文件管理API實(shí)踐
??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
前言
文件管理在我們?nèi)粘J褂檬謾C(jī)中是一個(gè)非常重要的功能,我們可以通過(guò)文件管理相關(guān) API 實(shí)現(xiàn)對(duì)指定文件的刪除、復(fù)制、移動(dòng)、壓縮解壓縮等操作。文件管理API 從Version 6 開(kāi)始支持,由于目前華為對(duì)公共文件訪問(wèn)的API暫時(shí)還沒(méi)開(kāi)放,所以目前只能對(duì)應(yīng)用私有目錄下的文件操作權(quán)限
參考資料
HarmonyOS文件管理JS API。
OpenHarmony API。
獲取當(dāng)前應(yīng)用私有目錄。
使用該功能模塊對(duì)文件/目錄進(jìn)行操作前,需要先獲取其絕對(duì)路徑,獲取方式及其接口用法請(qǐng)參考:??Ability上下文。??
在使用AbilityContext的功能前,需要通過(guò)getContext()先獲取Context對(duì)象。在使用AbilityContext的功能前,需要通過(guò)getContext()先獲取Context對(duì)象。
示例:
import ability_featureability from '@ohos.ability.featureAbility'
var context = ability_featureability.getContext();
獲取應(yīng)用內(nèi)部存儲(chǔ)目錄除了可以通過(guò)AbilityContext之外,還可以使用特定scheme(只支持internal)來(lái)訪問(wèn)預(yù)定義的一些文件存取目錄,詳細(xì)描述見(jiàn)??存儲(chǔ)目錄定義??。
不同設(shè)備上對(duì)應(yīng)的實(shí)際位置不同。對(duì)于不在下列目錄下的文件訪問(wèn)將被拒絕(禁止使用../等方式訪問(wèn)父目錄)。
通過(guò)實(shí)際代碼操作發(fā)現(xiàn)context.getFilesDir()獲取的目錄/data/data/應(yīng)用包名/files跟internal://app/的目錄是一樣的,這個(gè)在后面的示例代碼中有體現(xiàn)。
創(chuàng)建文件目錄
官方API文檔提供了多種創(chuàng)建文件目錄的方式,這里只對(duì)其中一種方式進(jìn)行演示,其他方式可自行驗(yàn)證。
mkdir(path:string, mode?: number): Promise。
以異步方法創(chuàng)建目錄,使用promise形式返回結(jié)果。這里我們通過(guò)context.getFilesDir()獲取到當(dāng)前的應(yīng)用的私有目錄,并在該文件夾下創(chuàng)建了4個(gè)文件夾。
獲取指定路徑下的所有文件
獲取指定目錄下的所有文件需要用到system.file模塊。
import file from '@system.file';
復(fù)制雖然官方文檔說(shuō)從API Version 6開(kāi)始,該接口不再維護(hù),推薦使用新接口'@ohos.fileio'。
但是我在fileio模塊中并未找到相關(guān)接口,不知道是文檔沒(méi)有更新還是怎么回事,所以只能繼續(xù)使用system.file模塊了,期待華為后面更新文檔。
system.file模塊接口文檔參考??獲取指定路徑下全部文件的列表??。
示例:
在這里我們可以看到我通過(guò)獲取internal://app/目錄下的所有文件,可以看到我們上面在/data/data/應(yīng)用包名/files下創(chuàng)建的文件夾。
獲取文件詳細(xì)信息
以異步方法獲取文件信息,使用callback形式返回結(jié)果。fileio.stat()。
參數(shù):
示例:
fileio.stat(path, function (err, stat) {
});
刪除目錄
以異步方法刪除目錄,使用callback形式返回結(jié)果。fileio.rmdir (BETA)7+。
參數(shù):
示例:
fileio.rmdir(path, function(err){
});
刪除文件
以異步方法刪除文件,使用callback形式返回結(jié)果。fileio.unlink()。
參數(shù):
示例:
await fileio.unlink(path, function(err) {
if (!err) {
// do something
}
});
文件的復(fù)制、移動(dòng)操作
以異步方法復(fù)制文件,使用callback形式返回結(jié)果。fileio.copyFile()
參數(shù):
示例:
await fileio.copyFile(src, dest, function (err) {
});
總結(jié):以上只是部分接口實(shí)踐,其他接接口大家可以參照華為官方API參考和openHarmony源碼自行實(shí)踐,這里推薦大家隨時(shí)隨地關(guān)注官方文檔的更新,因?yàn)橛行〢PI雖然文檔中介紹了,但是實(shí)際引用的時(shí)候發(fā)現(xiàn)相關(guān)功能并未實(shí)現(xiàn)。所以我們要時(shí)時(shí)刻刻的關(guān)注官方文檔更新情況。
??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??