Mongoose 开源库--Filesystem(文件系统)使用笔记

一、相关API

Mongoose 开源库中也包含 文件系统 相关的 API,如下:

af7dbced1c2bc5c074786fcfd5dc1100.png

908f21f9f9c87a212c646856d31875b1.png

文件虚拟层:

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

结果:

2b77d657d525e0bcba1a913e39b341f9.png

欢迎关注公众号:嵌入式学习与实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值