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