当前位置: 首页 > news >正文

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

一、相关API

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

af7dbced1c2bc5c074786fcfd5dc1100.png

908f21f9f9c87a212c646856d31875b1.png

文件虚拟层:

struct mg_fs {int (*st)(const char *path, size_t *size, time_t *mtime);  // stat filevoid (*ls)(const char *path, void (*fn)(const char *, void *), void *);void *(*op)(const char *path, int flags);             // Open filevoid (*cl)(void *fd);                                 // Close filesize_t (*rd)(void *fd, void *buf, size_t len);        // Read filesize_t (*wr)(void *fd, const void *buf, size_t len);  // Write filesize_t (*sk)(void *fd, size_t offset);                // Set file positionbool (*mv)(const char *from, const char *to);         // Rename filebool (*rm)(const char *path);                         // Delete filebool (*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 levelsize_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

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

http://www.lryc.cn/news/217325.html

相关文章:

  • 新兴初创企业参展招募
  • 【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包
  • 银行和金融企业为何青睐这8款项目管理工具
  • 一分钟理解npm run dev 和 npm run serve
  • HTTP 协议请求头 If-Match、If-None-Match 和 ETag
  • DAY42 1049.最后一块石头的重量II + 494.目标和 + 474.一和零
  • uniapp原生插件之安卓华为统一扫码HMS Scan Kit
  • 数模国赛——多波束测线问题模型建立研究分析
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • vue+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)
  • LeetCode算法题解|​ 669. 修剪二叉搜索树​、108. 将有序数组转换为二叉搜索树、​538. 把二叉搜索树转换为累加树​
  • 直播界很火的无线领夹麦克风快充方案 Type-C接口 PD快充+无线麦克风可同时进行
  • Jmeter 汉化中文语言
  • centos9 stream 下 rabbitmq高可用集群搭建及使用
  • 代码随想录算法训练营第10天|232. 用栈实现队列 225. 用队列实现栈
  • 线上Kafka集群如何调整消息存储时间
  • [迁移学习]DA-DETR基于信息融合的自适应检测模型
  • 【MATLAB】全网唯一的13种信号分解+FFT傅里叶频谱变换联合算法全家桶
  • Nginx安装与配置
  • linux笔记总结-基本命令
  • [PHP]禅道项目管理软件ZenTaoPMS源码包 v16.4
  • Required String parameter ‘name‘ is not present
  • 路由器基础(五): OSPF原理与配置
  • Leetcode1128. 等价多米诺骨牌对的数量
  • Dev-C调试的基本方法2-2
  • 企业之间的竞争,ISO三体系认证至关重要!
  • node教程(四)Mongodb+mongoose
  • 作为一个初学者,该如何入门大模型?
  • 编译支持GPU的opencv,并供python的import cv2调用
  • Bug记录