8000 fs, refactor: update writeFile function, support encoding for Buffer. · fibjs/fibjs@75742a1 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 75742a1

Browse files
committed
fs, refactor: update writeFile function, support encoding for Buffer.
1 parent 7af243e commit 75742a1

File tree

4 files changed

+51
-9
lines changed

4 files changed

+51
-9
lines changed

fibjs/include/ifs/fs.h

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ class fs_base : public object_base {
7474
static result_t write(FileHandle_base* fd, Buffer_base* buffer, int32_t offset, int32_t length, int32_t position, int32_t& retVal, AsyncEvent* ac);
7575
static result_t write(FileHandle_base* fd, exlib::string string, int32_t position, exlib::string encoding, int32_t& retVal, AsyncEvent* ac);
7676
static result_t writeTextFile(exlib::string fname, exlib::string txt, AsyncEvent* ac);
77-
static result_t writeFile(exlib::string fname, Buffer_base* data, AsyncEvent* ac);
77+
static result_t writeFile(exlib::string fname, Buffer_base* data, exlib::string opt, AsyncEvent* ac);
78+
static result_t writeFile(exlib::string fname, Buffer_base* data, v8::Local<v8::Object> options, AsyncEvent* ac);
7879
static result_t writeFile(exlib::string fname, exlib::string data, exlib::string opt, AsyncEvent* ac);
7980
static result_t writeFile(exlib::string fname, exlib::string data, v8::Local<v8::Object> options, AsyncEvent* ac);
8081
static result_t appendFile(exlib::string fname, Buffer_base* data, AsyncEvent* ac);
@@ -179,7 +180,8 @@ class fs_base : public object_base {
179180
ASYNC_STATICVALUE6(fs_base, write, FileHandle_base*, Buffer_base*, int32_t, int32_t, int32_t, int32_t);
180181
ASYNC_STATICVALUE5(fs_base, write, FileHandle_base*, exlib::string, int32_t, exlib::string, int32_t);
181182
ASYNC_STATIC2(fs_base, writeTextFile, exlib::string, exlib::string);
182-
ASYNC_STATIC2(fs_base, writeFile, exlib::string, Buffer_base*);
183+
ASYNC_STATIC3(fs_base, writeFile, exlib::string, Buffer_base*, exlib::string);
184+
ASYNC_STATIC3(fs_base, writeFile, exlib::string, Buffer_base*, v8::Local<v8::Object>);
183185
ASYNC_STATIC3(fs_base, writeFile, exlib::string, exlib::string, exlib::string);
184186
ASYNC_STATIC3(fs_base, writeFile, exlib::string, exlib::string, v8::Local<v8::Object>);
185187
ASYNC_STATIC2(fs_base, appendFile, exlib::string, Buffer_base*);
@@ -948,15 +950,27 @@ inline void fs_base::s_static_writeFile(const v8::FunctionCallbackInfo<v8::Value
948950
{
949951
METHOD_ENTER();
950952

951-
ASYNC_METHOD_OVER(2, 2);
953+
ASYNC_METHOD_OVER(3, 2);
952954

953955
ARG(exlib::string, 0);
954956
ARG(obj_ptr<Buffer_base>, 1);
957+
OPT_ARG(exlib::string, 2, "binary");
955958

956959
if (!cb.IsEmpty())
957-
hr = acb_writeFile(v0, v1, cb, args);
960+
hr = acb_writeFile(v0, v1, v2, cb, args);
958961
else
959-
hr = ac_writeFile(v0, v1);
962+
hr = ac_writeFile(v0, v1, v2);
963+
964+
ASYNC_METHOD_OVER(3, 3);
965+
966+
ARG(exlib::string, 0);
967+
ARG(obj_ptr<Buffer_base>, 1);
968+
ARG(v8::Local<v8::Object>, 2);
969+
970+
if (!cb.IsEmpty())
971+
hr = acb_writeFile(v0, v1, v2, cb, args);
972+
else
973+
hr = ac_writeFile(v0, v1, v2);
960974

961975
ASYNC_METHOD_OVER(3, 2);
962976

fibjs/src/fs/fs.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ result_t fs_base::writeTextFile(exlib::string fname, exlib::string txt,
230230
return hr;
231231
}
232232

233-
result_t fs_base::writeFile(exlib::string fname, Buffer_base* data, AsyncEvent* ac)
233+
result_t fs_base::writeFile(exlib::string fname, Buffer_base* data, exlib::string opt, AsyncEvent* ac)
234234
{
235235
if (ac->isSync())
236236
return CHECK_ERROR(CALL_E_NOSYNC);
@@ -248,6 +248,14 @@ result_t fs_base::writeFile(exlib::string fname, Buffer_base* data, AsyncEvent*
248248
return hr;
249249
}
250250

251+
result_t fs_base::writeFile(exlib::string fname, Buffer_base* data, v8::Local<v8::Object> options, AsyncEvent* ac)
252+
{
253+
if (ac->isSync())
254+
return CHECK_ERROR(CALL_E_NOSYNC);
255+
256+
return writeFile(fname, data, "", ac);
257+
}
258+
251259
result_t fs_base::writeFile(exlib::string fname, exlib::string data, exlib::string opt, AsyncEvent* ac)
252260
{
253261
if (ac->isSync())

idl/zh-cn/fs.idl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,8 +354,16 @@ module fs
354354
/*! @brief 创建二进制文件,并写入内容
355355
@param fname 指定文件名
356356
@param data 指定要写入的二进制数据
357+
@param opt 指定写入选项,将被忽略
357358
*/
358-
static writeFile(String fname, Buffer data) async;
359+
static writeFile(String fname, Buffer data, String opt = "binary") async;
360+
361+
/*! @brief 创建二进制文件,并写入内容
362+
@param fname 指定文件名
363+
@param data 指定要写入的二进制数据
364+
@param options 指定写入选项,将被忽略
365+
*/
366+
static writeFile(String fname, Buffer data, Object options) async;
359367

360368
/*! @brief 创建文件,并写入内容
361369
@param fname 指定文件名

npm/types/dts/module/fs.d.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -523,11 +523,23 @@ declare module 'fs' {
523523
* @description 创建二进制文件,并写入内容
524524
* @param fname 指定文件名
525525
* @param data 指定要写入的二进制数据
526+
* @param opt 指定写入选项,将被忽略
526527
*
527528
*/
528-
function writeFile(fname: string, data: Class_Buffer): void;
529+
function writeFile(fname: string, data: Class_Buffer, opt?: string): void;
529530

530-
function writeFile(fname: string, data: Class_Buffer, callback: (err: Error | undefined | null)=>any): void;
531+
function writeFile(fname: string, data: Class_Buffer, opt?: string, callback?: (err: Error | undefined | null)=>any): void;
532+
533+
/**
534+
* @description 创建二进制文件,并写入内容
535+
* @param fname 指定文件名
536+
* @param data 指定要写入的二进制数据
537+
* @param options 指定写入选项,将被忽略
538+
*
539+
*/
540+
function writeFile(fname: string, data: Class_Buffer, options: FIBJS.GeneralObject): void;
541+
542+
function writeFile(fname: string, data: Class_Buffer, options: FIBJS.GeneralObject, callback: (err: Error | undefined | null)=>any): void;
531543

532544
/**
533545
* @description 创建文件,并写入内容

0 commit comments

Comments
 (0)
0