libuv强调异步的编程风格,包括文件读写也是。下面就来介绍一下利用libuv进行文件读写的例子。
文件读写相关API介绍:
1.打开文件:
uv_fs_open(uv_loop_t* loop,uv_fs_t* req,const char* path,int flags,int mode,uv_fs_cb cb);
参数1:最终被uv_run启动的event-loop,如果只有一个loop的话可以使用libuv提供的默认loop:uv_default_loop();
参数2:与打开文件操作相关联的对象;
参数3:要打开的文件的路径名;
参数4:flag与标准的unix的open函数的flag相同;
参数5:mode与标准的unix的open函数的mode相同,如果忽略此项的话值可为0;
参数6:文件打开成功/失败后所调用的回调函数,函数原型:(*uv_fs_cb)(uv_fs_t* req);
返回值:文件描述符。
2.读文件:
int uv_fs_read(uv_loop_t* loop,uv_fs_t* req,uv_file file,const uv_buf_t bufs[],unsigned int nbufs,int64_t offset,uv_fs_cb cb);
参数1:event-loop;
参数2:与读文件操作相关联的对象;
参数3:实际为int型,文件描述符;
参数4:已经初始化完成的指向uv_buf_t结构体的指针,该结构体实际包含一个指向一个数组的指针以及数组中有效的数据长度。
结构体原型:
type