自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony—文件管理系列之二

系統(tǒng) OpenHarmony
本次分享的內(nèi)容是基于在文件管理模塊中發(fā)現(xiàn)的部分問題記錄,希望和大家一起成長(zhǎng)。

??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??

前言

本系列記錄團(tuán)隊(duì)openHarmony 的學(xué)習(xí)和實(shí)踐中,所踩過的坑以及填坑的記錄,可能社區(qū)已有分享相關(guān)的文檔,但也不妨大家一起探討。

一、獲取指定路徑下的文件列表

若需獲取指定路徑下的文件列表,可以通過直接調(diào)用 file.list 來獲取,也可以通過先調(diào)用 context.getFilesDir 來獲取到應(yīng)用在內(nèi)部存儲(chǔ)上的文件路徑,得到路徑后通過調(diào)用 fileio.opendir 可以獲取到存儲(chǔ)路徑下的文件。

**需注意:**file模塊從 API Version 6開始不再維護(hù),官方建議使用fileio模塊。

1、file模塊調(diào)用

getlist() {
file.list({
uri: 'internal://app/',
success: function(data) {
if(data.fileList.length) {
data.fileList.forEach(item=>{
console.log(JSON.stringify(item))
})
}
},
fail: function (data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
complete: function (data, code) {
console.info('call complete callback complete, code: ' + code + ', data: ' + data);
},
});
},

2、fileio模塊調(diào)用

getFilesDirUri() {
context.getFilesDir()
.then((data) => {
console.info('getFilesDir res' + data); // data 內(nèi)部存儲(chǔ)目錄
this.opendir(data)
}).catch((error) => {
console.error('getFilesDir err' + error.message);
})
},
async opendir(path) {
let dir = await fileio.opendir(path); // dir 管理目錄
this.inquireFiles(dir);
},
async inquireFiles(dir) {
let dirent = await dir.read(); // 讀取下一個(gè)目錄項(xiàng)
if(dirent) {
console.log(dirent.name)
this.inquireFiles(dir); // 循環(huán)獲取下一個(gè)目錄下
}else {
dir.closeSync(); // 關(guān)閉目錄,釋放dir中的文件描述
}
},

二、文件管理api調(diào)用時(shí)發(fā)現(xiàn)的問題

1、注意設(shè)備的基線版本

遠(yuǎn)程模擬器的底層內(nèi)核是基于 HarmonyOS實(shí)現(xiàn)的,因此在遠(yuǎn)程模擬器上可以調(diào)用實(shí)現(xiàn)的文件管理異步api。而底層內(nèi)核基于OpenHarmony實(shí)現(xiàn)的設(shè)備,若無法成功調(diào)用文件管理異步api,那么就需要查看設(shè)備的基線版本號(hào),查詢此基線版本是否支持文件管理的異步調(diào)用方式。

2、fileio模塊無復(fù)制文件夾方法

fileio模塊提供了文件的復(fù)制,但是沒有文件夾的復(fù)制,因此在實(shí)現(xiàn)文件夾復(fù)制時(shí),可能需要自行去遍歷文件夾中的內(nèi)容,逐個(gè)去遍歷其中的文件并復(fù)制到相應(yīng)位置,新建同名文件夾到相應(yīng)位置。

3、文件夾刪除時(shí)里面不能存在內(nèi)容

fileio.rmdir刪除文件夾時(shí),文件夾中不能存在文件、文件夾數(shù)據(jù),只有當(dāng)文件夾為空時(shí)才可以刪除文件夾。所以在刪除文件夾時(shí)需先刪除文件夾中的所有內(nèi)容,再刪除文件夾 。

fileio.rmdir(path)
.then(function(res) {
// 刪除目錄成功,do something
console.log('rmdir res: '+JSON.stringify(res))
}).catch(function(err){
console.log('rmdir err: '+JSON.stringify(err))
});

文件夾中沒有文件數(shù)據(jù)執(zhí)行刪除文件夾返回:

文件夾中存在文件數(shù)據(jù)執(zhí)行刪除文件夾返回:

4、文件夾和文件移動(dòng)

fileio模塊中沒有特定說明文件夾和文件的移動(dòng)該如何實(shí)現(xiàn),但我們可以通過 fileio.rename 重命名文件來實(shí)現(xiàn),因?yàn)橹孛募鑲魅雰蓚€(gè)地址,一個(gè)是目標(biāo)文件的當(dāng)前絕對(duì)路徑,一個(gè)是目標(biāo)文件的新絕對(duì)路徑,可以通過改變新絕對(duì)路徑來實(shí)現(xiàn)文件夾和文件的移動(dòng)。

// 若文件夾存放路徑為:
let storagePath = 'res/data/data/com.kaihong.bookrack/files/storage/test';
// 需要移動(dòng)到的路徑為:
let movePath = 'res/data/data/com.kaihong.bookrack/files/move';
// 將文件存放路徑后段拼接移動(dòng)到的路徑
let Newpath = movePath + '/test'
fileio.rename(storagePath, Newpath)
.then(function(res) {
// 重命名文件成功,do something
}).catch(function(err){

});

三、總結(jié)

本次分享的內(nèi)容是基于在文件管理模塊中發(fā)現(xiàn)的部分問題記錄,希望和大家一起成長(zhǎng)。

??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2022-02-28 14:54:48

openHarmon鴻蒙操作系統(tǒng)

2022-03-30 14:07:47

Harmony操作系統(tǒng)鴻蒙

2022-05-11 15:08:52

驅(qū)動(dòng)開發(fā)系統(tǒng)移植

2018-04-17 14:20:45

物聯(lián)網(wǎng)發(fā)展趨勢(shì)互聯(lián)網(wǎng)

2022-03-29 10:04:44

APIHarmony文件管理

2011-10-17 15:03:48

2009-07-01 20:58:40

2022-03-10 14:45:23

HarmonyAPI操作系統(tǒng)

2011-11-17 15:28:02

2009-09-04 13:09:06

IT職業(yè)規(guī)劃喻勇

2021-11-08 15:06:15

鴻蒙HarmonyOS應(yīng)用

2021-11-25 09:54:54

鴻蒙HarmonyOS應(yīng)用

2018-05-27 00:14:09

2017-01-12 15:06:30

AndroidAppActivityMan

2014-11-13 10:59:41

私有云管理私有云服務(wù)水平協(xié)議

2022-05-09 11:52:38

Java卡片服務(wù)卡片

2015-09-10 09:16:45

TCP緩存

2021-10-11 11:58:41

Channel原理recvq

2021-12-01 07:02:16

虛擬化LinuxCPU

2013-03-06 19:00:48

運(yùn)維安全管理云計(jì)算安恒
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)