From 0a5801efcd3e7601b103bf083773abc5d84ab07f Mon Sep 17 00:00:00 2001 From: zhangxiaoliang25 Date: Mon, 11 Sep 2023 09:52:06 +0000 Subject: [PATCH] =?UTF-8?q?=20=20=20=201.=20=E4=BF=AE=E5=A4=8Dmove=20?= =?UTF-8?q?=E4=B8=AD=E5=90=AB=E6=9C=89=E4=B8=AD=E6=96=87=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=20=E4=BC=9A=E5=A4=B1=E8=B4=A5=20=20=20=20=202.=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dmove=20=E6=BA=90=E6=96=87=E4=BB=B6=E5=92=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=96=87=E4=BB=B6=20=E4=B8=8D=E9=83=BD=E6=98=AF?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=88=96=E8=80=85=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E4=BC=9A=E5=A4=B1=E8=B4=A5=20=20=20=20=203.=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dcopy=20=E5=90=AB=E6=9C=89=E4=B8=AD=E6=96=87=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E4=BC=9A=E5=A4=B1=E8=B4=A5=20=20=20=20=204.=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcopy=20=E6=BA=90=E6=96=87=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=96=87=E4=BB=B6=E4=B8=8D=E9=83=BD=E6=98=AF?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=88=96=E8=80=85=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E4=BC=9A=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangxiaoliang25 Change-Id: I1eb271afb9842d7af80370db405194217ef96844 --- .../FileExtensionAbility.ts | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts index 83671a90..7d5861a3 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts @@ -376,6 +376,29 @@ export default class FileExtAbility extends Extension { return code; } + deleteTarget(targetUri): void { + let statNew = fs.statSync(targetUri); + if (!statNew){ + return ; + } + if (statNew.isDirectory) { + fs.rmdirSync(targetUri); + } else { + fs.unlinkSync(newPath); + } + } + + deleteTargetFile(targetUri): void { + let statNew = fs.statSync(targetUri); + if (!statNew){ + return ; + } + if (statNew.isDirectory) { + return; + } + fs.unlinkSync(newPath); + } + move(sourceFileUri, targetParentUri): {string, number} { sourceFileUri = this.decode(sourceFileUri); targetParentUri = this.decode(targetParentUri); @@ -402,19 +425,21 @@ export default class FileExtAbility extends Extension { code: E_URIS, }; } + if (oldPath === newPath) { // move to the same directory return { uri: newFileUri, code: ERR_OK, }; - } else if (newPath.match(new RegExp('^' + oldPath + '(/|$)'))) { + } else if (newPath.indexOf(oldPath) === 0 && newPath.charAt(oldPath.length) === '/') { // move to a subdirectory of the source directory return { uri: '', code: E_GETRESULT, }; } + try { // The source file does not exist or the destination is not a directory let isAccess = fs.accessSync(oldPath); @@ -449,10 +474,7 @@ export default class FileExtAbility extends Extension { }; } // when targetFile is exist, delete it - let isAccessNewPath = fs.accessSync(newPath); - if (isAccessNewPath) { - fs.unlinkSync(newPath); - } + this.deleteTarget(newPath); fs.moveFileSync(oldPath, newPath, 0); return { @@ -583,10 +605,7 @@ export default class FileExtAbility extends Extension { }; try { - let isExist = fs.accessSync(newFilePath); - if (isExist) { - fs.unlinkSync(newFilePath); - } + this.deleteTarget(newFilePath) fs.copyFileSync(sourceFilePath, newFilePath); } catch (err) { hilog.error(DOMAIN_CODE, TAG, @@ -602,6 +621,7 @@ export default class FileExtAbility extends Extension { code: ERR_OK, }; try { + this.deleteTargetFile(targetFilePath); fs.copyDirSync(sourceFilePath, targetFilePath, mode); } catch (err) { if (err.code === E_EXIST) { @@ -625,6 +645,8 @@ export default class FileExtAbility extends Extension { } copy(sourceFileUri, targetParentUri, force): {[], number} { + sourceFileUri = this.decode(sourceFileUri); + targetParentUri = this.decode(targetParentUri); let checkRet = this.checkCopyArguments(sourceFileUri, targetParentUri); if (checkRet.code !== ERR_OK) { return checkRet; -- Gitee