## fs\_t ### 概述 文件系统接口。 ---------------------------------- ### 函数

| 函数名称 | 说明 | | -------- | ------------ | | dir\_exist | 判断目录是否存在。 | | file\_exist | 判断文件是否存在。 | | file\_get\_size | 获取文件大小。 | | file\_read | 读取文件的全部内容。 | | file\_read\_part | 从某个位置读取文件。 | | file\_remove | 刪除文件。 | | file\_write | 写入文件。 | | fs\_build\_user\_storage\_file\_name | 生成一个保存数据文件的完整路径的文件名。 | | fs\_change\_dir | 修改当前目录。 | | fs\_copy\_dir | 拷贝目录。 | | fs\_copy\_dir\_ex | 拷贝目录。 | | fs\_copy\_file | 拷贝文件。 | | fs\_create\_dir | 创建目录。 | | fs\_create\_dir\_r | 递归创建目录。 | | fs\_dir\_exist | 判断目录是否存在。 | | fs\_dir\_is\_empty | 判断目录是否为空。 | | fs\_dir\_rename | 目录重命名。 | | fs\_file\_equal | 比较二进制文件。 | | fs\_file\_exist | 判断文件是否存在。 | | fs\_file\_rename | 文件重命名。 | | fs\_foreach\_file | 遍历指定目录下全部常规文件。 | | fs\_get\_cwd | 获取当前所在目录。 | | fs\_get\_disk\_info | 获取文件系统信息。 | | fs\_get\_exe | 获取可执行文件所在目录。 | | fs\_get\_file\_size | 获取文件大小。 | | fs\_get\_temp\_path | 获取临时目录。 | | fs\_get\_user\_storage\_path | 获取home目录或者应用程序可以写入数据的目录。 | | fs\_open\_dir | 打开目录。 | | fs\_open\_file | 打开文件。 | | fs\_remove\_dir | 刪除目录。 | | fs\_remove\_dir\_r | 递归刪除目录。 | | fs\_remove\_file | 刪除文件。 | | fs\_stat | 获取文件信息。 | | os\_fs | 获取缺省的文件系统对象。 | #### dir\_exist 函数 ----------------------- * 函数功能: >

判断目录是否存在。 * 函数原型: ``` bool_t dir_exist (const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示成功,否则表示失败。 | | name | const char* | 目录名。 | #### file\_exist 函数 ----------------------- * 函数功能: >

判断文件是否存在。 * 函数原型: ``` bool_t file_exist (const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示成功,否则表示失败。 | | name | const char* | 文件名。 | #### file\_get\_size 函数 ----------------------- * 函数功能: >

获取文件大小。 * 函数原型: ``` int32_t file_get_size (const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int32\_t | 返回非负表示文件大小,否则表示失败。 | | name | const char* | 文件名。 | #### file\_read 函数 ----------------------- * 函数功能: >

读取文件的全部内容。 * 函数原型: ``` void* file_read (const char* name, uint32_t* size); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | void* | 返回读取的数据,需要调用TKMEM\_FREE释放。 | | name | const char* | 文件名。 | | size | uint32\_t* | 返回实际读取的长度。 | #### file\_read\_part 函数 ----------------------- * 函数功能: >

从某个位置读取文件。 * 函数原型: ``` int32_t file_read_part (const char* name, void* buff, uint32_t size, uint32_t offset); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int32\_t | 返回实际读取的字节数。 | | name | const char* | 文件名。 | | buff | void* | 数据缓冲区。 | | size | uint32\_t | 数据长度。 | | offset | uint32\_t | 偏移量。 | #### file\_remove 函数 ----------------------- * 函数功能: >

刪除文件。 * 函数原型: ``` ret_t file_remove (const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | name | const char* | 文件名。 | #### file\_write 函数 ----------------------- * 函数功能: >

写入文件。 * 函数原型: ``` ret_t file_write (const char* name, const void* buff, uint32_t size); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | name | const char* | 文件名。 | | buff | const void* | 数据缓冲区。 | | size | uint32\_t | 数据长度。 | #### fs\_build\_user\_storage\_file\_name 函数 ----------------------- * 函数功能: >

生成一个保存数据文件的完整路径的文件名。 * 函数原型: ``` ret_t fs_build_user_storage_file_name (char* filename, const char* appname, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | filename | char* | 用于返回完整路径的文件名。 | | appname | const char* | 应用程序的名称。 | | name | const char* | 文件名(不包括路径)。 | #### fs\_change\_dir 函数 ----------------------- * 函数功能: >

修改当前目录。 * 函数原型: ``` ret_t fs_change_dir (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_copy\_dir 函数 ----------------------- * 函数功能: >

拷贝目录。 * 函数原型: ``` ret_t fs_copy_dir (fs_t* fs, const char* src, const char* dst); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | src | const char* | 源目录。 | | dst | const char* | 目标目录。 | #### fs\_copy\_dir\_ex 函数 ----------------------- * 函数功能: >

拷贝目录。 * 函数原型: ``` ret_t fs_copy_dir_ex (fs_t* fs, const char* src, const char* dst, bool_t overwrite); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | src | const char* | 源目录。 | | dst | const char* | 目标目录。 | | overwrite | bool\_t | 是否覆盖。 | #### fs\_copy\_file 函数 ----------------------- * 函数功能: >

拷贝文件。 * 函数原型: ``` ret_t fs_copy_file (fs_t* fs, const char* src, const char* dst); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | src | const char* | 源文件名。 | | dst | const char* | 目标文件名。 | #### fs\_create\_dir 函数 ----------------------- * 函数功能: >

创建目录。 * 函数原型: ``` ret_t fs_create_dir (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_create\_dir\_r 函数 ----------------------- * 函数功能: >

递归创建目录。 * 函数原型: ``` ret_t fs_create_dir_r (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_dir\_exist 函数 ----------------------- * 函数功能: >

判断目录是否存在。 * 函数原型: ``` bool_t fs_dir_exist (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示存在,否则表示不存在。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_dir\_is\_empty 函数 ----------------------- * 函数功能: >

判断目录是否为空。 * 函数原型: ``` bool_t fs_dir_is_empty (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示目录为空,否则表示目录不为空。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_dir\_rename 函数 ----------------------- * 函数功能: >

目录重命名。 * 函数原型: ``` ret_t fs_dir_rename (fs_t* fs, const char* name, const char* new_name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 旧目录名称。 | | new\_name | const char* | 新目录名称。 | #### fs\_file\_equal 函数 ----------------------- * 函数功能: >

比较二进制文件。 * 函数原型: ``` bool_t fs_file_equal (fs_t* fs, const char* src, const char* dst); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示相同,否则表示不同。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | src | const char* | 源文件名。 | | dst | const char* | 目标文件名。 | #### fs\_file\_exist 函数 ----------------------- * 函数功能: >

判断文件是否存在。 * 函数原型: ``` bool_t fs_file_exist (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示存在,否则表示不存在。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 文件名。 | #### fs\_file\_rename 函数 ----------------------- * 函数功能: >

文件重命名。 * 函数原型: ``` ret_t fs_file_rename (fs_t* fs, const char* name, const char* new_name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 旧文件名。 | | new\_name | const char* | 新文件名。 | #### fs\_foreach\_file 函数 ----------------------- * 函数功能: >

遍历指定目录下全部常规文件。 示例: ```c static ret_t on_file(void* ctx, const void* data) { const char* filename = (const char*)data; const char* extname = (const char*)ctx; if (tk_str_end_with(filename, extname)) { log_debug("%s\n", filename); } return RET_OK; } ... fs_foreach_file("tests/testdata", on_file, (void*)".json"); ``` * 函数原型: ``` ret_t fs_foreach_file (const char* path, tk_visit_t on_file, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回TRUE表示成功,否则表示失败。 | | path | const char* | 目录。 | | on\_file | tk\_visit\_t | 回调函数(完整文件名通过data参数传入)。 | | ctx | void* | 回调函数上下文。 | #### fs\_get\_cwd 函数 ----------------------- * 函数功能: >

获取当前所在目录。 * 函数原型: ``` ret_t fs_get_cwd (fs_t* fs, char* path); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | path | char* | 保存当前所在目录的路径。 | #### fs\_get\_disk\_info 函数 ----------------------- * 函数功能: >

获取文件系统信息。 * 函数原型: ``` ret_t fs_get_disk_info (fs_t* fs, const char* volume, int32_t* free_kb, int32_t* total_kb); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回不是-1表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | volume | const char* | 卷名。 | | free\_kb | int32\_t* | 用于返回空闲空间大小(KB) | | total\_kb | int32\_t* | 用于返回总共空间大小(KB) | #### fs\_get\_exe 函数 ----------------------- * 函数功能: >

获取可执行文件所在目录。 * 函数原型: ``` ret_t fs_get_exe (fs_t* fs, char* path); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | path | char* | 保存可执行文件的路径。 | #### fs\_get\_file\_size 函数 ----------------------- * 函数功能: >

获取文件大小。 * 函数原型: ``` int32_t fs_get_file_size (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int32\_t | 返回不是-1表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 文件名。 | #### fs\_get\_temp\_path 函数 ----------------------- * 函数功能: >

获取临时目录。 * 函数原型: ``` ret_t fs_get_temp_path (fs_t* fs, char* path); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | path | char* | 保存路径。 | #### fs\_get\_user\_storage\_path 函数 ----------------------- * 函数功能: >

获取home目录或者应用程序可以写入数据的目录。 * 函数原型: ``` ret_t fs_get_user_storage_path (fs_t* fs, char* path); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | path | char* | 保存路径。 | #### fs\_open\_dir 函数 ----------------------- * 函数功能: >

打开目录。 * 函数原型: ``` fs_dir_t* fs_open_dir (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | fs\_dir\_t* | 返回非NULL表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_open\_file 函数 ----------------------- * 函数功能: >

打开文件。 * 函数原型: ``` fs_file_t* fs_open_file (fs_t* fs, const char* name, const char* mode); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | fs\_file\_t* | 返回非NULL表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 文件名。 | | mode | const char* | 打开方式,取值请参考POSIX的[fopen函数](https://www.runoob.com/cprogramming/c-function-fopen.html)相应的参数。 | #### fs\_remove\_dir 函数 ----------------------- * 函数功能: >

刪除目录。 * 函数原型: ``` ret_t fs_remove_dir (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_remove\_dir\_r 函数 ----------------------- * 函数功能: >

递归刪除目录。 * 函数原型: ``` ret_t fs_remove_dir_r (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 目录名称。 | #### fs\_remove\_file 函数 ----------------------- * 函数功能: >

刪除文件。 * 函数原型: ``` ret_t fs_remove_file (fs_t* fs, const char* name); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 文件名。 | #### fs\_stat 函数 ----------------------- * 函数功能: >

获取文件信息。 * 函数原型: ``` ret_t fs_stat (fs_t* fs, const char* name, fs_stat_info_t* fst); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | fs | fs\_t* | 文件系统对象,一般赋值为os\_fs()。 | | name | const char* | 文件名。 | | fst | fs\_stat\_info\_t* | 文件状态信息。 | #### os\_fs 函数 ----------------------- * 函数功能: >

获取缺省的文件系统对象。 * 函数原型: ``` fs_t* os_fs (); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | fs\_t* | 返回文件系统对象。 |