From 49ea8fade8dcd8fc009ce2ce7ef695964483d1fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Tue, 25 Mar 2025 18:56:52 +0800 Subject: [PATCH 1/7] stream ets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 --- interfaces/kits/js/BUILD.gn | 8 + .../js/src/mod_fs/ani/bind_function_class.cpp | 24 ++ .../js/src/mod_fs/ani/ets/@ohos.file.fs.ets | 223 ++++++++++++++++++ 3 files changed, 255 insertions(+) diff --git a/interfaces/kits/js/BUILD.gn b/interfaces/kits/js/BUILD.gn index 9334220be..ca383313a 100644 --- a/interfaces/kits/js/BUILD.gn +++ b/interfaces/kits/js/BUILD.gn @@ -665,6 +665,8 @@ ohos_shared_library("ani_fs_class") { "src/mod_fs/class_file/ani", "src/mod_fs/class_stat", "src/mod_fs/class_stat/ani", + "src/mod_fs/class_stream", + "src/mod_fs/class_stream/ani", "src/mod_fs/properties", "src/mod_fs/properties/ani", "src/mod_fs/properties/copy_listener", @@ -678,11 +680,15 @@ ohos_shared_library("ani_fs_class") { "src/mod_fs/class_file/fs_file.cpp", "src/mod_fs/class_stat/ani/stat_ani.cpp", "src/mod_fs/class_stat/fs_stat.cpp", + "src/mod_fs/class_stream/ani/stream_ani.cpp", + "src/mod_fs/class_stream/fs_stream.cpp", "src/mod_fs/fs_utils.cpp", "src/mod_fs/properties/access_core.cpp", "src/mod_fs/properties/ani/access_ani.cpp", "src/mod_fs/properties/ani/close_ani.cpp", "src/mod_fs/properties/ani/copy_file_ani.cpp", + "src/mod_fs/properties/ani/create_stream_ani.cpp", + "src/mod_fs/properties/ani/fdopen_stream_ani.cpp", "src/mod_fs/properties/ani/listfile_ani.cpp", "src/mod_fs/properties/ani/mkdir_ani.cpp", "src/mod_fs/properties/ani/move_ani.cpp", @@ -695,6 +701,8 @@ ohos_shared_library("ani_fs_class") { "src/mod_fs/properties/ani/write_ani.cpp", "src/mod_fs/properties/close_core.cpp", "src/mod_fs/properties/copy_file_core.cpp", + "src/mod_fs/properties/create_stream_core.cpp", + "src/mod_fs/properties/fdopen_stream_core.cpp", "src/mod_fs/properties/listfile_core.cpp", "src/mod_fs/properties/mkdir_core.cpp", "src/mod_fs/properties/move_core.cpp", 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 065495c9a..c4705d663 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 @@ -68,6 +68,20 @@ static ani_status BindStatClassMethods(ani_env *env) return BindClass(env, className, methods); } +static ani_status BindStreamMethods(ani_env *env) +{ + static const char *className = "L@ohos/file/fs/StreamInner;"; + + std::array methods = { + ani_native_function { "closeSync", nullptr, reinterpret_cast(StreamAni::Close) }, + ani_native_function { "flushSync", nullptr, reinterpret_cast(StreamAni::Flush) }, + ani_native_function { "readSync", nullptr, reinterpret_cast(StreamAni::Read) }, + ani_native_function { "writeSync", nullptr, reinterpret_cast(StreamAni::Write) }, + }; + + return BindClass(env, className, methods); +} + static ani_status BindStaticMethods(ani_env *env) { static const char *className = "L@ohos/file/fs/FileIoImpl;"; @@ -75,7 +89,11 @@ static ani_status BindStaticMethods(ani_env *env) std::array methods = { ani_native_function { "closeSync", nullptr, reinterpret_cast(CloseAni::CloseSync) }, ani_native_function { "copyFileSync", nullptr, reinterpret_cast(CopyFileAni::CopyFileSync) }, + ani_native_function { + "createStreamSync", nullptr, reinterpret_cast(CreateStreamAni::CreateStreamSync) }, ani_native_function { "doAccessSync", nullptr, reinterpret_cast(AccessAni::AccessSync3) }, + ani_native_function { + "fdopenStreamSync", nullptr, reinterpret_cast(FdopenStreamAni::FdopenStreamSync) }, ani_native_function { "listFileSync", nullptr, reinterpret_cast(ListFileAni::ListFileSync) }, ani_native_function { "mkdirSync", "Lstd/core/String;:V", reinterpret_cast(MkdirkAni::MkdirSync0) }, ani_native_function { "mkdirSync", "Lstd/core/String;Z:V", reinterpret_cast(MkdirkAni::MkdirSync1) }, @@ -129,6 +147,12 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) return status; }; + status = BindStreamMethods(env); + if (status != ANI_OK) { + HILOGE("Cannot bind native methods for Stream Class!"); + return status; + }; + *result = ANI_VERSION_1; return ANI_OK; } diff --git a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets index 67eb95add..2618e4b82 100644 --- a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets +++ b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets @@ -492,6 +492,64 @@ function stat(file: string | number, callback: AsyncCallback): void }); } +function fdopenStream(fd: number, mode: string): Promise{ + return new Promise((resolve: (result: Stream) => void, reject: (e: BusinessError) => void) => { + let promise = taskpool.execute(FileIoImpl.fdopenStreamSync, fd, mode); + promise.then((ret: NullishType): void => { + let stream = ret as Stream; + resolve(stream); + }).catch((e: BusinessError): void => { + reject(e); + }); + }); +} + +function fdopenStream(fd: number, mode: string, callback: AsyncCallback): void { + let promise = taskpool.execute(FileIoImpl.fdopenStreamSync, fd, mode); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + let stream = ret as Stream; + callback(e, stream); + }).catch((e: BusinessError): void => { + let r: Stream = new StreamInner(0); + callback(e, r); + }); +} + +function fdopenStreamSync(fd: number, mode: string): Stream { + return FileIoImpl.fdopenStreamSync(fd, mode); +} + +function createStream(path: string, mode: string): Promise { + return new Promise((resolve: (result: Stream) => void, reject: (e: BusinessError) => void) => { + let promise = taskpool.execute(FileIoImpl.createStreamSync, path, mode); + promise.then((ret: NullishType): void => { + let stream = ret as Stream; + resolve(stream); + }).catch((e: BusinessError): void => { + reject(e); + }); + }); +} + +function createStream(path: string, mode: string, callback: AsyncCallback): void{ + let promise = taskpool.execute(FileIoImpl.createStreamSync, path, mode); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + let stream = ret as Stream; + callback(e, stream); + }).catch((e: BusinessError): void => { + let r: Stream = new StreamInner(0); + callback(e, r); + }); +} + +function createStreamSync(path: string, mode: string): Stream{ + return FileIoImpl.createStreamSync(path, mode); +} + export interface Filter { suffix?: Array; displayName?: Array; @@ -623,6 +681,167 @@ class StatInner implements Stat { native isSymbolicLink(): boolean; } +export interface Stream { + close(): Promise; + close(callback: AsyncCallback): void; + closeSync(): void; + flush(): Promise; + flush(callback: AsyncCallback): void; + flushSync(): void; + write(buffer: ArrayBuffer | string, options?: WriteOptions): Promise; + write(buffer: ArrayBuffer | string, callback: AsyncCallback): void; + write(buffer: ArrayBuffer | string, options: WriteOptions, callback: AsyncCallback): void; + writeSync(buffer: ArrayBuffer | string, options?: WriteOptions): number; + read(buffer: ArrayBuffer, options?: ReadOptions): Promise; + read(buffer: ArrayBuffer, callback: AsyncCallback): void; + read(buffer: ArrayBuffer, options: ReadOptions, callback: AsyncCallback): void; + readSync(buffer: ArrayBuffer, options?: ReadOptions): number; +} + +class StreamInner implements Stream { + private nativePtr: long = 0; + + constructor(ptr: long) { + if (this.nativePtr === 0) { + this.nativePtr = ptr; + } + } + + close(): Promise { + return new Promise((resolve: (result: undefined) => void, reject: (e: BusinessError) => void): void => { + let promise = taskpool.execute((): undefined => this.closeSync()); + promise.then((ret: NullishType): void => { + resolve(undefined); + }).catch((e: BusinessError): void => { + reject(e); + }); + }); + } + close(callback: AsyncCallback): void { + let promise = taskpool.execute((): undefined => this.closeSync()); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + callback(e, undefined); + }).catch((e: BusinessError): void => { + callback(e, undefined); + }); + } + native closeSync(): void; + + flush(): Promise { + return new Promise((resolve: (result: undefined) => void, reject: (e: BusinessError) => void): void => { + let promise = taskpool.execute((): undefined => this.flushSync()); + promise.then((ret: NullishType): void => { + resolve(undefined); + }).catch((e: BusinessError): void => { + reject(e); + }); + }); + } + flush(callback: AsyncCallback): void { + let promise = taskpool.execute((): undefined => this.flushSync()); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + callback(e, undefined); + }).catch((e: BusinessError): void => { + callback(e, undefined); + }); + } + native flushSync(): void; + + write(buffer: ArrayBuffer | string, options?: WriteOptions): Promise { + return new Promise((resolve: (result: number) => void, reject: (e: BusinessError) => void) => { + if (options === undefined) { + let promise = taskpool.execute(this.writeSync, buffer, options); + promise.then((ret: NullishType): void => { + let result = ret as number + resolve(result); + }).catch((e: BusinessError): void => { + reject(e); + }); + } else { + let promise = taskpool.execute(this.writeSync, buffer, options); + promise.then((ret: NullishType): void => { + let result = ret as number + resolve(result); + }).catch((e: BusinessError): void => { + reject(e); + }); + } + }); + } + write(buffer: ArrayBuffer | string, callback: AsyncCallback): void { + let promise = taskpool.execute(this.writeSync, buffer); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + let result = ret as number; + callback(e, result); + }).catch((e: BusinessError): void => { + callback(e, 0); + }); + } + write(buffer: ArrayBuffer | string, options: WriteOptions, callback: AsyncCallback): void { + let promise = taskpool.execute(this.writeSync, buffer, options); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + let result = ret as number; + callback(e, result); + }).catch((e: BusinessError): void => { + callback(e, 0); + }); + } + native writeSync(buffer: ArrayBuffer | string, options?: WriteOptions): number; + + read(buffer: ArrayBuffer, options?: ReadOptions): Promise { + return new Promise((resolve: (result: number) => void, reject: (e: BusinessError) => void) => { + if (options === undefined) { + let promise = taskpool.execute(this.readSync, buffer, options); + promise.then((ret: NullishType): void => { + let result = ret as number + resolve(result); + }).catch((e: BusinessError): void => { + reject(e); + }); + } else { + let promise = taskpool.execute(this.readSync, buffer, options); + promise.then((ret: NullishType): void => { + let result = ret as number + resolve(result); + }).catch((e: BusinessError): void => { + reject(e); + }); + } + }); + } + read(buffer: ArrayBuffer, callback: AsyncCallback): void { + let promise = taskpool.execute(this.readSync, buffer); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + let result = ret as number; + callback(e, result); + }).catch((e: BusinessError): void => { + callback(e, 0); + }); + } + read(buffer: ArrayBuffer, options: ReadOptions, callback: AsyncCallback): void { + let promise = taskpool.execute(this.readSync, buffer, options); + promise.then((ret: NullishType): void => { + let e = new BusinessError(); + e.code = 0; + let result = ret as number; + callback(e, result); + }).catch((e: BusinessError): void => { + callback(e, 0); + }); + } + native readSync(buffer: ArrayBuffer, options?: ReadOptions): number; +} + class FileIoImpl { static { @@ -635,6 +854,10 @@ class FileIoImpl { static native copyFileSync(src: string | number, dest: string | number, mode?: number): void; + static native createStreamSync(path: string, mode: string): Stream; + + static native fdopenStreamSync(fd: number, mode: string): Stream; + static native listFileSync(path: string, options?: ListFileOptions): string[]; static native mkdirSync(path: string): void; -- Gitee From 4ac2045cf8884853623327169541f4b1042c04ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Tue, 25 Mar 2025 18:59:40 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 --- interfaces/kits/js/BUILD.gn | 4 ---- 1 file changed, 4 deletions(-) diff --git a/interfaces/kits/js/BUILD.gn b/interfaces/kits/js/BUILD.gn index ca383313a..ab11fb920 100644 --- a/interfaces/kits/js/BUILD.gn +++ b/interfaces/kits/js/BUILD.gn @@ -665,8 +665,6 @@ ohos_shared_library("ani_fs_class") { "src/mod_fs/class_file/ani", "src/mod_fs/class_stat", "src/mod_fs/class_stat/ani", - "src/mod_fs/class_stream", - "src/mod_fs/class_stream/ani", "src/mod_fs/properties", "src/mod_fs/properties/ani", "src/mod_fs/properties/copy_listener", @@ -680,8 +678,6 @@ ohos_shared_library("ani_fs_class") { "src/mod_fs/class_file/fs_file.cpp", "src/mod_fs/class_stat/ani/stat_ani.cpp", "src/mod_fs/class_stat/fs_stat.cpp", - "src/mod_fs/class_stream/ani/stream_ani.cpp", - "src/mod_fs/class_stream/fs_stream.cpp", "src/mod_fs/fs_utils.cpp", "src/mod_fs/properties/access_core.cpp", "src/mod_fs/properties/ani/access_ani.cpp", -- Gitee From 11ec6634a7070dfa49f37ca42bf75c61a0a234a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Tue, 25 Mar 2025 20:05:21 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 --- .../kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets index 2618e4b82..1bcab9906 100644 --- a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets +++ b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets @@ -717,6 +717,7 @@ class StreamInner implements Stream { }); }); } + close(callback: AsyncCallback): void { let promise = taskpool.execute((): undefined => this.closeSync()); promise.then((ret: NullishType): void => { @@ -727,6 +728,7 @@ class StreamInner implements Stream { callback(e, undefined); }); } + native closeSync(): void; flush(): Promise { @@ -739,6 +741,7 @@ class StreamInner implements Stream { }); }); } + flush(callback: AsyncCallback): void { let promise = taskpool.execute((): undefined => this.flushSync()); promise.then((ret: NullishType): void => { @@ -749,12 +752,13 @@ class StreamInner implements Stream { callback(e, undefined); }); } + native flushSync(): void; write(buffer: ArrayBuffer | string, options?: WriteOptions): Promise { return new Promise((resolve: (result: number) => void, reject: (e: BusinessError) => void) => { if (options === undefined) { - let promise = taskpool.execute(this.writeSync, buffer, options); + let promise = taskpool.execute(this.writeSync, buffer); promise.then((ret: NullishType): void => { let result = ret as number resolve(result); @@ -772,6 +776,7 @@ class StreamInner implements Stream { } }); } + write(buffer: ArrayBuffer | string, callback: AsyncCallback): void { let promise = taskpool.execute(this.writeSync, buffer); promise.then((ret: NullishType): void => { @@ -783,6 +788,7 @@ class StreamInner implements Stream { callback(e, 0); }); } + write(buffer: ArrayBuffer | string, options: WriteOptions, callback: AsyncCallback): void { let promise = taskpool.execute(this.writeSync, buffer, options); promise.then((ret: NullishType): void => { @@ -794,12 +800,13 @@ class StreamInner implements Stream { callback(e, 0); }); } + native writeSync(buffer: ArrayBuffer | string, options?: WriteOptions): number; read(buffer: ArrayBuffer, options?: ReadOptions): Promise { return new Promise((resolve: (result: number) => void, reject: (e: BusinessError) => void) => { if (options === undefined) { - let promise = taskpool.execute(this.readSync, buffer, options); + let promise = taskpool.execute(this.readSync, buffer); promise.then((ret: NullishType): void => { let result = ret as number resolve(result); @@ -817,6 +824,7 @@ class StreamInner implements Stream { } }); } + read(buffer: ArrayBuffer, callback: AsyncCallback): void { let promise = taskpool.execute(this.readSync, buffer); promise.then((ret: NullishType): void => { @@ -828,6 +836,7 @@ class StreamInner implements Stream { callback(e, 0); }); } + read(buffer: ArrayBuffer, options: ReadOptions, callback: AsyncCallback): void { let promise = taskpool.execute(this.readSync, buffer, options); promise.then((ret: NullishType): void => { @@ -839,6 +848,7 @@ class StreamInner implements Stream { callback(e, 0); }); } + native readSync(buffer: ArrayBuffer, options?: ReadOptions): number; } -- Gitee From 7db592926d1a687a1641c13572337f0275cf1093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Wed, 26 Mar 2025 09:31:56 +0800 Subject: [PATCH 4/7] =?UTF-8?q?gn=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 --- interfaces/kits/js/BUILD.gn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interfaces/kits/js/BUILD.gn b/interfaces/kits/js/BUILD.gn index ab11fb920..e4edefad3 100644 --- a/interfaces/kits/js/BUILD.gn +++ b/interfaces/kits/js/BUILD.gn @@ -678,6 +678,8 @@ ohos_shared_library("ani_fs_class") { "src/mod_fs/class_file/fs_file.cpp", "src/mod_fs/class_stat/ani/stat_ani.cpp", "src/mod_fs/class_stat/fs_stat.cpp", + "src/mod_fs/class_stream/ani/stream_wrapper.cpp", + "src/mod_fs/class_stream/stream_instantiator.cpp", "src/mod_fs/fs_utils.cpp", "src/mod_fs/properties/access_core.cpp", "src/mod_fs/properties/ani/access_ani.cpp", -- Gitee From 89672c2f8657f24d8af5e2c16da166336082dcae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Wed, 26 Mar 2025 09:22:46 +0000 Subject: [PATCH 5/7] update interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 --- interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp | 1 + 1 file changed, 1 insertion(+) 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 c4705d663..ad3c1272f 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 @@ -31,6 +31,7 @@ #include "read_text_ani.h" #include "rmdir_ani.h" #include "stat_ani.h" +#include "stream_ani.h" #include "truncate_ani.h" #include "unlink_ani.h" #include "write_ani.h" -- Gitee From 0d83b5145949f2e8254ebfa1066c1bf99bebe5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Wed, 26 Mar 2025 09:25:17 +0000 Subject: [PATCH 6/7] update interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 --- interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp | 2 ++ 1 file changed, 2 insertions(+) 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 ad3c1272f..8b3a96b1a 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 @@ -21,6 +21,8 @@ #include "bind_function.h" #include "close_ani.h" #include "copy_file_ani.h" +#include "create_stream_ani.h" +#include "fdopen_stream_ani.h" #include "file_ani.h" #include "filemgmt_libhilog.h" #include "listfile_ani.h" -- Gitee From d2850fce4dad348cdc5aa38ece8c101b90a5f892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Thu, 27 Mar 2025 19:02:28 +0800 Subject: [PATCH 7/7] seek MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 --- interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp | 4 ++++ interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets | 2 ++ 2 files changed, 6 insertions(+) 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 c4705d663..62055ca76 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 @@ -21,6 +21,8 @@ #include "bind_function.h" #include "close_ani.h" #include "copy_file_ani.h" +#include "create_stream_ani.h" +#include "fdopen_stream_ani.h" #include "file_ani.h" #include "filemgmt_libhilog.h" #include "listfile_ani.h" @@ -31,6 +33,7 @@ #include "read_text_ani.h" #include "rmdir_ani.h" #include "stat_ani.h" +#include "stream_ani.h" #include "truncate_ani.h" #include "unlink_ani.h" #include "write_ani.h" @@ -77,6 +80,7 @@ static ani_status BindStreamMethods(ani_env *env) ani_native_function { "flushSync", nullptr, reinterpret_cast(StreamAni::Flush) }, ani_native_function { "readSync", nullptr, reinterpret_cast(StreamAni::Read) }, ani_native_function { "writeSync", nullptr, reinterpret_cast(StreamAni::Write) }, + ani_native_function { "seek", nullptr, reinterpret_cast(StreamAni::Seek) }, }; return BindClass(env, className, methods); diff --git a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets index 1bcab9906..7f4d67b99 100644 --- a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets +++ b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets @@ -696,6 +696,7 @@ export interface Stream { read(buffer: ArrayBuffer, callback: AsyncCallback): void; read(buffer: ArrayBuffer, options: ReadOptions, callback: AsyncCallback): void; readSync(buffer: ArrayBuffer, options?: ReadOptions): number; + seek(offset: number, whence?: number): number; } class StreamInner implements Stream { @@ -850,6 +851,7 @@ class StreamInner implements Stream { } native readSync(buffer: ArrayBuffer, options?: ReadOptions): number; + native seek(offset: number, whence?: number): number; } class FileIoImpl { -- Gitee