简介
- 文件相关api
struct mg_fd
- 简介:
- 文件系统虚拟化层
- Mongoose允许覆盖文件IO操作,以支持不同的存储设备,如可编程的闪存,无文件系统设备等。为了实现这一点,Mongoose提供了一个结构mg_fs API来指定一个自定义的文件系统。除此之外,Mongoose还提供了几个内置的API–一个标准的POSIX,FatFS,和一个 “打包的FS “API:
1 2 3
extern struct mg_fs mg_fs_posix; // POSIX open/close/read/write/seek extern struct mg_fs mg_fs_packed; // Packed FS, see examples/device-dashboard extern struct mg_fs mg_fs_fat; // FAT FS
- 原型: ```c struct mg_fs { int (st)(const char *path, size_t *size, time_t *mtime); // stat file void (ls)(const char path, void (fn)(const char , void *), void *); void *(op)(const char path, int flags); // Open file void (cl)(void fd); // Close file size_t (rd)(void fd, void *buf, size_t len); // Read file size_t (wr)(void fd, const void *buf, size_t len); // Write file size_t (sk)(void fd, size_t offset); // Set file position bool (mv)(const char from, const char *to); // Rename file bool (rm)(const char path); // Delete file bool (mkd)(const char *path); // Create directory };
enum { MG_FS_READ = 1, MG_FS_WRITE = 2, MG_FS_DIR = 4 };
1
2
3
4
5
6
7
8
9
10
11
12
## struct mg_fd
+ 简介:
+ 已打开的文件抽象。
+ 原型:
```c
struct mg_fd {
void *fd;
struct mg_fs *fs;
};
mg_fs_open
- 简介:
- 在一个给定的文件系统中打开一个文件
- 原型:
1
struct mg_fd *mg_fs_open(struct mg_fs *fs, const char *path, int flags);
- 参数:
- fs : 一个文件系统的实现
- path : 一个文件路径
- flags : 所需的标志,是MG_FS_READ和MG_FS_WRITE的组合。
- 返回值:
- 成功: 一个非NULL的已打开的描述符、
- 失败: NULL
- 示例
1
struct mg_fd *fd = mg_fs_open(&mg_fs_posix, "/tmp/data.json", MG_FS_WRITE);
mg_fs_close
- 简介:
- 关闭一个已打开的文件描述符
- 原型:
1
void mg_fs_close(struct mg_fd *fd);
- 参数:
- fd : 一个已打开的文件描述符
- 返回自:
- 无
mg_file_read
- 简介:
- 在内存中读取整个文件。
- 原型
1
char *mg_file_read(struct mg_fs *fs, const char *path, size_t *size);
- 参数
- fs : 一个文件系统的实现
- path : 一个文件路径
- size : 如果不是NULL,将包含所读文件的大小。
- 返回值:
- 成功时,一个指向文件数据的指针,该指针保证为0端。
- 错误时,为NULL
- 示例:
1 2
size_t size = 0; char *data = mg_file_read(&mg_fs_packed, "/data.json", &size);
mg_file_write
- 简介:
- 写入一段数据buf,len到一个文件路径。如果该文件不存在,它将被创建。之前的内容,如果有的话,会被删除。
- 原型:
1
bool mg_file_write(struct mg_fs *fs, const char *path, const void *buf, size_t len);
- 参数:
- fs : 一个文件系统的实现
- path : 一个文件路径
- buf : 一个指向待写数据的指针
- len : 待写数据的大小
- 返回值:
- 成功, true
- 失败, false
- 示例:
1
mg_file_write(&mg_fs_fat, "/test.txt", "hi\n", 3);
mg_file_printf
- 简介:
- 写一个打印格式的数据到一个文件路径。如果该文件不存在,它将被创建。之前的内容(如果有的话)被删除
- 原型:
1
bool mg_file_printf(struct mg_fs *fs, const char *path, const char *fmt, ...);
- 参数:
- fs : 一个文件系统的实现
- path : 一个文件路径
- fmt : printf语义中的格式字符串。支持的格式指定器的列表见mg_snprintf。
- 返回值:
- 成功, true
- 失败, false
- 示例:
1
mg_file_printf(&mg_fs_fat, "/test.txt", "%s\n", "hi");