From c947fb7bcbdc90d407918245e2f638e02eb25ff4 Mon Sep 17 00:00:00 2001 From: futurezhou Date: Wed, 12 Apr 2023 16:50:12 +0800 Subject: [PATCH] fileio Interface switching Signed-off-by: futurezhou --- .../FileExtensionAbility.ts | 81 +++++++++++-------- 1 file changed, 47 insertions(+), 34 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 d924ed28..e528610c 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 @@ -15,6 +15,7 @@ // @ts-nocheck import Extension from '@ohos.application.FileAccessExtensionAbility' import fileio from '@ohos.fileio' +import fileIO from '@ohos.file.fs'; import { init, findVolumeInfo, delVolumeInfo, getVolumeInfoList, path2uri } from './VolumeManager' import { onReceiveEvent } from './Subcriber' import fileExtensionInfo from "@ohos.file.fileExtensionInfo" @@ -26,8 +27,8 @@ const DocumentFlag = fileExtensionInfo.DocumentFlag; const NotifyType = fileExtensionInfo.NotifyType; const DeviceType = fileExtensionInfo.DeviceType; const BUNDLE_NAME = 'com.ohos.UserFile.ExternalFileManager'; -const DEFAULT_MODE = 0o666; -const CREATE_FILE_FLAGS = 0o100; +const DEFAULT_MODE = 0o0; +const CREATE_FILE_MODE = 0o100; const URI_SCHEME = 'datashare://'; const DOMAIN_CODE = 0x0001; const TAG = 'ExternalFileManager'; @@ -36,10 +37,10 @@ const ERR_ERROR = -1; const E_EXIST = 13900015; const E_URIS = 14300002; const E_GETRESULT = 14300004; -const DATA_DB_DATE_ADDED = 'date_added'; -const DATA_DB_DATE_MODIFIED = 'date_modified'; -const FILE_DATA_ATIME = 'atime'; -const FILE_DATA_MTIME = 'mtime'; +const DATA_DB_DATE_ADDED = "date_added"; +const DATA_DB_DATE_MODIFIED = "date_modified"; +const FILE_DATA_ATIME = "atime"; +const FILE_DATA_MTIME = "mtime"; let callbackFun = null; export default class FileExtAbility extends Extension { @@ -142,7 +143,7 @@ export default class FileExtAbility extends Extension { recurseDir(path, cb) { try { - let stat = fileio.statSync(path); + let stat = fileIO.statSync(path); if (stat.isDirectory()) { let dir = fileio.opendirSync(path); let hasNextFile = true; @@ -187,7 +188,7 @@ export default class FileExtAbility extends Extension { let fd = 0; try { let path = this.getPath(sourceFileUri); - fd = fileio.openSync(path, flags, DEFAULT_MODE); + fd = fileIO.openSync(path, DEFAULT_MODE); return { fd: fd, code: ERR_OK, @@ -217,8 +218,8 @@ export default class FileExtAbility extends Extension { }; } let path = this.getPath(newFileUri); - let fd = fileio.openSync(path, CREATE_FILE_FLAGS, DEFAULT_MODE); - fileio.closeSync(fd); + let fd = fileIO.openSync(path, CREATE_FILE_MODE); + fileIO.closeSync(fd); return { uri: newFileUri, code: ERR_OK, @@ -242,7 +243,7 @@ export default class FileExtAbility extends Extension { try { let newFileUri = this.genNewFileUri(parentUri, displayName); let path = this.getPath(newFileUri); - fileio.mkdirSync(path); + fileIO.mkdirSync(path); return { uri: newFileUri, code: ERR_OK, @@ -266,17 +267,14 @@ export default class FileExtAbility extends Extension { try { if (isDirectory) { if (!hasNextFile) { - fileio.rmdirSync(filePath); + fileIO.rmdirSync(filePath); } } else { - fileio.unlinkSync(filePath); + fileIO.unlinkSync(filePath); } } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'delete error ' + e.message); - // At present, the master libn has modified the interface exception throwing mechanism - // and the exception has no code attribute, which will lead to the failure of some faf use cases. - // In the later stage, the new file_api interfaces will be merged and modified in a unified way. - code = E_GETRESULT; + code = e.code; } }); return code; @@ -308,8 +306,15 @@ export default class FileExtAbility extends Extension { } try { // The source file does not exist or the destination is not a directory - fileio.accessSync(oldPath); - let stat = fileio.statSync(this.getPath(targetParentUri)); + let isAccess = fileIO.accessSync(oldPath); + if(!isAccess) + { + return { + uri: '', + code: E_GETRESULT, + }; + } + let stat = fileIO.statSync(this.getPath(targetParentUri)); if (!stat || !stat.isDirectory()) { return { uri: '', @@ -318,7 +323,7 @@ export default class FileExtAbility extends Extension { } // If not across devices, use fileio.renameSync to move if (!this.isCrossDeviceLink(sourceFileUri, targetParentUri)) { - fileio.renameSync(oldPath, newPath); + fileIO.renameSync(oldPath, newPath); return { uri: newFileUri, code: ERR_OK, @@ -331,6 +336,7 @@ export default class FileExtAbility extends Extension { code: e.code, }; } + /** * Recursive source directory * If it is a directory, create a new directory first and then delete the source directory. @@ -344,16 +350,23 @@ export default class FileExtAbility extends Extension { if (hasNextFile) { try { // If the target directory already has a directory with the same name, it will not be created - fileio.accessSync(newFilePath); + let isAccess = fileIO.accessSync(newFilePath); + if(!isAccess) + { + fileIO.mkdirSync(newFilePath); + } } catch (e) { - fileio.mkdirSync(newFilePath); + return { + uri: '', + code: e.code, + }; } } else { - fileio.rmdirSync(filePath); + fileIO.rmdirSync(filePath); } } else { - fileio.copyFileSync(filePath, newFilePath); - fileio.unlinkSync(filePath); + fileIO.copyFileSync(filePath, newFilePath); + fileIO.unlinkSync(filePath); } } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'move error ' + e.message); @@ -380,7 +393,7 @@ export default class FileExtAbility extends Extension { let newFileUri = this.renameUri(sourceFileUri, displayName); let oldPath = this.getPath(sourceFileUri); let newPath = this.getPath(newFileUri); - fileio.renameSync(oldPath, newPath); + fileIO.renameSync(oldPath, newPath); return { uri: newFileUri, code: ERR_OK, @@ -404,7 +417,11 @@ export default class FileExtAbility extends Extension { } try { let path = this.getPath(sourceFileUri); - fileio.accessSync(path); + let isAccess = fileIO.accessSync(path); + return { + isExist: isAccess, + code: ERR_OK, + }; } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'access error ' + e.message); if (e.message == 'No such file or directory') { @@ -418,10 +435,6 @@ export default class FileExtAbility extends Extension { code: e.code, } } - return { - isExist: true, - code: ERR_OK, - }; } listFile(sourceFileUri, offset, count, filter) { @@ -499,7 +512,7 @@ export default class FileExtAbility extends Extension { try { let path = this.getPath(selectFileUri); let fileName = this.getFileName(path); - let stat = fileio.statSync(path) + let stat = fileIO.statSync(path) let mode = DocumentFlag.SUPPORTS_READ | DocumentFlag.SUPPORTS_WRITE; if (stat.isDirectory()) { mode |= DocumentFlag.REPRESENTS_DIR; @@ -554,7 +567,7 @@ export default class FileExtAbility extends Extension { try { let dirPath = this.getPath(uri); - let stat = fileio.statSync(dirPath); + let stat = fileIO.statSync(dirPath); let convertColumn = new Map([ [DATA_DB_DATE_ADDED, FILE_DATA_ATIME], [DATA_DB_DATE_MODIFIED, FILE_DATA_MTIME] @@ -590,7 +603,7 @@ export default class FileExtAbility extends Extension { } if (!isDirectory) { - let stat = fileio.statSync(filePath); + let stat = fileIO.statSync(filePath); size += stat.size; } }); -- Gitee