一、相关API
Mongoose 开源库中也包含 文件系统 相关的 API,如下:
文件虚拟层:
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 };
具体可查看官方文档,官方介绍文档:
https://mongoose.ws/documentation/#filesystem
二、测试代码
测试代码如下:
#include "mongoose.h"
int main(int argv,char *argc[])
{
mg_log_set(MG_LL_DEBUG); // Set log level
size_t size = 0;
char *data=NULL;
struct mg_fd *fd=NULL;
if(argv != 3)
{
MG_INFO(("argc[1] is file path\n"));
MG_INFO(("argc[2] is file content\n"));
return -1;
}
MG_INFO(("%d\n",1));
// fd = mg_fs_open(&mg_fs_posix, "./test.txt", MG_FS_WRITE);
// mg_fs_close(fd);
MG_INFO(("%d\n",2));
mg_file_write(&mg_fs_posix, argc[1], argc[2], strlen(argc[2]));
// MG_INFO(("%d\n",3));
// fd = mg_fs_open(&mg_fs_posix, "./test.txt", MG_FS_READ);
// mg_fs_close(fd);
MG_INFO(("%d\n",4));
data= mg_file_read(&mg_fs_posix, argc[1], &size);
MG_INFO(("%s\n",data));
if(data != NULL)
free(data);
return 0;
}
生成可执行文件main。
测试的文件名为2.txt,文件内容为“123456789abcdef”。
输入指令
./main 2.txt 123456789abcdef
结果:
欢迎关注公众号:嵌入式学习与实践