diff --git a/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp b/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp index d68feda839c3b489b766f8c6a9da35d09c3ffb1e..9ec9a375bd373dac5759c5ed535f1c97b59a0769 100644 --- a/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp +++ b/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp @@ -319,10 +319,16 @@ int JsFileAccessExtAbility::OpenFile(const Uri &uri, int flags) return *fd; } +struct Value { + std::string uri; + std::string message; + int code {0}; +}; + int JsFileAccessExtAbility::CreateFile(const Uri &parent, const std::string &displayName, Uri &newFile) { StartTrace(HITRACE_TAG_FILEMANAGEMENT, "CreateFile"); - auto uri = std::make_shared(); + auto valueVec = std::make_shared(); auto argParser = [parent, displayName](NativeEngine &engine, NativeValue *argv[], size_t &argc) -> bool { NativeValue *nativeParent = engine.CreateString(parent.ToString().c_str(), parent.ToString().length()); if (nativeParent == nullptr) { @@ -339,8 +345,11 @@ int JsFileAccessExtAbility::CreateFile(const Uri &parent, const std::string &dis argc = ARGC_TWO; return true; }; - auto retParser = [uri](NativeEngine &engine, NativeValue *result) -> bool { - bool ret = ConvertFromJsValue(engine, result, *uri); + auto retParser = [valueVec](NativeEngine &engine, NativeValue *result) -> bool { + NativeObject *obj = ConvertNativeValueTo(result); + bool ret = ConvertFromJsValue(engine, obj->GetProperty("uri"), valueVec->uri); + ret = ret && ConvertFromJsValue(engine, obj->GetProperty("message"), valueVec->message); + ret = ret && ConvertFromJsValue(engine, obj->GetProperty("code"), valueVec->code); if (!ret) { HILOG_ERROR("Convert js value fail."); } @@ -353,12 +362,18 @@ int JsFileAccessExtAbility::CreateFile(const Uri &parent, const std::string &dis FinishTrace(HITRACE_TAG_FILEMANAGEMENT); return errCode; } - if ((*uri).empty()) { + + HILOG_INFO("tag dsa ---------------12345------newFile:%{public}s",valueVec->uri.c_str()); + HILOG_INFO("tag dsa ---------------12345------message:%{public}s",valueVec->message.c_str()); + HILOG_INFO("tag dsa ---------------12345------code:%{public}d",valueVec->code); + + if ((valueVec->uri).empty()) { HILOG_ERROR("call CreateFile with return empty."); FinishTrace(HITRACE_TAG_FILEMANAGEMENT); return ERR_ERROR; } - newFile = Uri(*uri); + newFile = Uri(valueVec->uri); + FinishTrace(HITRACE_TAG_FILEMANAGEMENT); return errCode; } 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 121e2d4c1934eb4accd19a97baf31a3f652fe6ba..6e7727b18196a26a3f31e82cefb4b6aa56246574 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 @@ -170,19 +170,38 @@ export default class FileExtAbility extends Extension { createFile(parentUri, displayName) { if (!this.checkUri(parentUri)) { - return ''; + return { + uri: '', + message: 'checkUri fail', + code: -1, + }; + // return ''; } try { let newFileUri = this.genNewFileUri(parentUri, displayName); if (this.isFileExist(newFileUri)) { - return ''; + return { + uri: '', + message: 'file is exist', + code: -1, + }; + // return ''; } let path = this.getPath(newFileUri); fileio.openSync(path, CREATE_FILE_FLAGS, DEFAULT_MODE); - return newFileUri; + return { + uri: newFileUri, + message: '', + code: 0, + }; + // return newFileUri; } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'createFile error ' + e.message); - return ''; + return { + uri: '', + message: e.message, + code: -1, + }; } }