diff --git a/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp b/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp index faf539b46a7f93916aad61a21ffc975afcb70cfe..91af1e340b94458af5b2422844d705e34d5e3612 100644 --- a/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp +++ b/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp @@ -20,6 +20,7 @@ #include "access_ani.h" #include "bind_function.h" #include "filemgmt_libhilog.h" +#include "file_ani.h" #include "close_ani.h" #include "copy_file_ani.h" #include "listfile_ani.h" @@ -35,6 +36,20 @@ using namespace OHOS::FileManagement::ModuleFileIO::ANI; +static ani_status BindFileMethods(ani_env *env) +{ + static const char *className = "Lfile_fs_class/FileInner;"; + + std::array methods = { + ani_native_function { "getParent", nullptr, reinterpret_cast(FileAni::GetParent) }, + ani_native_function { "lock", nullptr, reinterpret_cast(FileAni::Lock) }, + ani_native_function { "tryLock", nullptr, reinterpret_cast(FileAni::TryLock) }, + ani_native_function { "unlock", nullptr, reinterpret_cast(FileAni::UnLock) }, + }; + + return BindClass(env, className, methods); +} + static ani_status BindStatClassMethods(ani_env *env) { static const char *className = "Lfile_fs_class/StatInner;"; @@ -91,6 +106,12 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) return status; }; + status = BindFileMethods(env); + if (status != ANI_OK) { + HILOGE("Cannot bind native methods for file Class"); + return status; + }; + status = BindStatClassMethods(env); if (status != ANI_OK) { HILOGE("Cannot bind native methods for Stat Class!"); diff --git a/interfaces/kits/js/src/mod_fs/ani/file_fs_class.ets b/interfaces/kits/js/src/mod_fs/ani/file_fs_class.ets index e320a1087f6dcdb1b1529b47227bd61245a21526..0e87574122ef576f4952382f0d5c416cbcd8efba 100644 --- a/interfaces/kits/js/src/mod_fs/ani/file_fs_class.ets +++ b/interfaces/kits/js/src/mod_fs/ani/file_fs_class.ets @@ -782,6 +782,23 @@ function unlinkSyncTest() { console.println("unlinkSyncTest end"); } +function fileTest() { + console.println("fileTest begin"); + let file = fileIo.openSync("/data/local/tmp/a.txt"); + let fd = file.fd; + console.println(`open file, fd=${fd}`); + let parent = file.getParent(); + console.println(`file parent=${parent}`); + file.lock(); + console.println(`file lock completed`); + file.unlock(); + console.println(`file unlock completed`); + file.tryLock(true); + console.println(`file tryLock completed`); + file.unlock(); + console.println(`file unlock completed`); + console.println("fileTest end"); +} function main() { console.println("---------- hello ani --------------"); @@ -805,6 +822,6 @@ function main() { truncateSyncTest2(); truncateSyncTest3(); unlinkSyncTest(); - + fileTest(); console.println("---------- hello ani end ---------------"); } \ No newline at end of file