FatFs目录访问接口中文版

2023-11-03

▼我是阿荣,关注我,在技术路上一起精进!▼

目录访问

f_opendir - 打开目录

函数原型

FRESULT f_opendir (
  DIR* dp,           /* [OUT] Pointer to the directory object structure */
  const TCHAR* path  /* [IN] Directory name */
);

形参
dp
指向空白目录对象的指针,以创建新目录对象。
path
指向以NULL结尾的字符串的指针,该字符串指定要打开的目录名。
返回值
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_OBJECT, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES
描述
f_opendir函数打开现有目录,并为后续f_readdir函数创建目录对象。

f_closedir - 关闭打开的目录

函数原型

FRESULT f_closedir (
  DIR* dp     /* [IN] Pointer to the directory object */
);

形参
dp
指向要关闭的已打开目录对象结构的指针。
返回值
FR_OK, FR_INT_ERR, FR_INVALID_OBJECT, FR_TIMEOUT
描述
f_closedir函数关闭打开的目录对象。函数成功后,目录对象不再有效,可以将其丢弃。
请注意,如果未启用FF_FS_LOCK选项,也可以在不使用此过程的情况下丢弃目录对象。但是,出于将来的兼容性考虑,不建议这样使用。

f_readdir - 读取目录项

函数原型

FRESULT f_readdir (
  DIR* dp,      /* [IN] Directory object */
  FILINFO* fno  /* [OUT] File information structure */
);
FRESULT f_rewinddir (
  DIR* dp       /* [IN] Directory object */
);

形参
dp
指向打开目录对象的指针。
fno
指向文件信息结构的指针,用于存储有关读取项的信息。空指针倒带目录的读取索引。
返回值
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, FR_TIMEOUT, FR_NOT_ENOUGH_CORE
描述
f_readdir函数从打开的目录中读取一个目录项,即关于对象的信息。可以通过f_readdir函数调用顺序读取目录中的项。当目录中的所有项都已读取且没有要读取的项时,将在fno->fname[]中存储一个空字符串,且不会出现任何错误。当给fno一个空指针时,目录对象的读取索引被倒带。f_rewinddir函数作为宏实现。

#define f_rewinddir(dp) f_readdir((dp), 0)

启用LFN时,将在文件信息结构中定义一个成员altname[],以存储对象的短文件名。如果由于下列原因无法访问长文件名,则短文件名将存储到fname[]中,而altname[]具有空字符串。

  • 该项没有LFN。(不适用于exFAT卷)
  • FF_MAX_LFN不足以处理LFN。(不是FF_MAX_LFN==255的情况)
  • FF_LFN_BUF不足以存储LFN。
  • LFN包含当前CP中未定义的某些字符。(FF_LFN_UNICODE!=0中不是这种情况)

exFAT卷中的读取目录存在问题。exFAT不支持短文件名。这意味着在上述条件下不能返回任何名称。如果是这种情况,则“?”作为文件名返回,以指示对象不可访问。要避免此问题,请配置FatFs FF_LFN_UNICODE!=0和FF_MAX_LFN==255以支持LFN规范的全部功能。
FAT卷子目录中的点条目(“.”和“.”)将被过滤掉,它们将永远不会出现在读取项中,因为exFAT在子目录中缺少点条目。

f_findfirst - 打开目录并读取匹配的第一项

函数原型

FRESULT f_findfirst (
  DIR* dp,              /* [OUT] Poninter to the directory object */
  FILINFO* fno,         /* [OUT] Pointer to the file information structure */
  const TCHAR* path,    /* [IN] Pointer to the directory name to be opened */
  const TCHAR* pattern  /* [IN] Pointer to the matching pattern string */
);

形参
dp
指向空白目录对象的指针。
fno
指向文件信息结构的指针,用于存储有关找到的项的信息。
path
指向以NULL结尾的字符串的指针,该字符串指定要打开的目录名。
pattern
指向以NULL结尾的字符串的指针,该字符串指定要搜索的名称匹配模式。后续的f_findnext函数也会引用该字符串,因此在后续函数调用时,该字符串必须有效。
返回值
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_OBJECT, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES
描述
在path指定的目录可以打开之后,它开始搜索目录中具有path指定的匹配模式的项。如果找到第一个项目,有关该项目的信息将存储到文件信息结构fno中。如果未找到,则fno->fname[]具有空字符串。

匹配的模式字符串可以包含通配符。例如:

  • ?:任何角色的角色。
  • ???:长度为三个字符的任意字符串。
  • *:长度为零或更长的任意字符串。
  • ???*:长度为四个字符或更长的任意字符串。

由于匹配算法使用递归,因此匹配模式中的通配符数量限制为四个,以限制堆栈的使用。任何具有过多通配符的模式都与任何名称不匹配。在LFN配置中,当FF_USE_FIND == 1时,仅测试fname[],当FF_USE_FIND == 2时,也测试altname[]。FATF和标准系统在匹配条件方面存在以下差异。
“**”在标准系统中,当它匹配任何带有或不带扩展名的名称时,它从不匹配任何不带扩展名的名称。
在标准系统中,任何以点结尾的模式都不会与任何名称匹配,而与没有扩展名的名称匹配。
当使用ANSI/OEM代码API启用LFN时,DBCS扩展字符会区分大小写进行比较。

示例

/* Search a directory for objects and display it */

void find_image_file (void)
{
    FRESULT fr;     /* Return value */
    DIR dj;         /* Directory object */
    FILINFO fno;    /* File information */

    fr = f_findfirst(&dj, &fno, "", "????????.JPG"); /* Start to search for photo files */

    while (fr == FR_OK && fno.fname[0]) {         /* Repeat while an item is found */
        printf("%s\n", fno.fname);                /* Print the object name */
        fr = f_findnext(&dj, &fno);               /* Search for next item */
    }

    f_closedir(&dj);
}

f_findnext - 读取下一个匹配项

函数原型

FRESULT f_findnext (
  DIR* dp,              /* [IN] Poninter to the directory object */
  FILINFO* fno          /* [OUT] Pointer to the file information structure */
);

形参
dp
指向由f_findfirst函数创建的有效目录对象的指针。
fno
指向文件信息结构的指针,用于存储有关找到的目录项的信息。
返回值
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_OBJECT, FR_TIMEOUT, FR_NOT_ENOUGH_CORE
描述
它将从上一次调用f_findfirst或f_findnext函数继续搜索。如果找到,有关对象的信息将存储到文件信息结构中。如果没有要读取的项,则将在fno->fname[]中返回空字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FatFs目录访问接口中文版 的相关文章

  • QT基础学习(12)---事件过滤

    文章目录 事件过滤 一 事件过滤 实现该功能的方法就是在目标部件 自定义的图片显示部件 上注册事件过滤器 此时的事件过滤器就是我们所说的监视对象 完成这些步骤之后 当目标部件有事件产生后 首先会传递给监视对象 事件过滤器 进行处理而不是该事
  • 树莓派4B(buster)的源更换为北外(清华)国内源

    树莓派4B buster 的源更换为北外 清华 国内源 1 登陆到树莓派 ssh pi your raspi IP 2 备份源文件 sudo cp etc apt sources list etc apt sources list bak
  • 树莓派体验3 - SSH登录树莓派

    如果没有HDMI转接线 显示器 USB转TTL串口线 那么可以通过网络SSH远程登录的方式访问树莓派 无显示器使用SSH访问 开启SSH服务 首先 通过镜像版本号确认一下SSH是否默认开启 树莓派官网的release note中说明 201
  • stm32USB之模拟U盘

    STMF0 W25Q32模拟U盘 1 第一次写博客 如有错误 请及时指正 如有表达不通顺的地方 敬请谅解 2 本篇文章主要描述如何使用STM32cube配置USB 使用的主控为STM32F072 Flash为W25Q32 使用的主控RAM只
  • 粤嵌GEC6818开发板-入门感慨篇(续一)

    触摸屏的事件 include
  • STM32F4之ADC1【库函数操作】

    折腾了两天ADC多通道采样 采样的结果都很乱 完全不是预期值 在amobbs求助也没有找到结果 于是决定从简单开始 一步步折腾着破ADC ADC试验1实验说明 1 这个实验仅仅是初始化一个ADC 对其输入进行采样 2 使用STM32F4的A
  • 嵌入式 在开发板显示bmp图片、jpeg图片

    嵌入式 在开发板显示bmp图片 jpeg图片 一 简述 记 在GEC6818开发板 800W 480H 显示24位的bmp图片 使用开源的jpeg库显示jpeg图片 代码 链接 https pan baidu com s 1G3jzvdnc
  • 计算机毕业设计项目大全

    文章目录 0 前言 1 java web 管理系统 毕设选题 2 java web 平台 业务系统 毕设选题 3 游戏设计 动画设计类 毕设选题 适合数媒的同学 4 算法开发 5 数据挖掘 毕设选题 6 大数据处理 云计算 区块链 毕设选题
  • MSP430嵌入式接口编程(惯性测量单元温湿度双音多频磁力计LCD显示等)

    Energia IDE编程MSP430 GPIO 串口通讯 定时中断 添加库 嵌入式器件接口编程 加速度计 include
  • C++实现FFT频谱分析

    Update 9 10 2022 鸽了太久 增补了一些新的表述和简单推导 以及FFT在算法竞赛中的应用部分 帖子里的代码已经分别在2021全国大学生电子设计竞赛 洛谷OJ和课程设计中实战过 可靠性有保障 Origin 10 23 2021
  • connect函数的用法

    作者 曾宏安 华清远见嵌入式学院讲师 在网络编程中 connect函数经常用来在套接字上初始化连接 无论是流式套接字还是数据报套接字都可以使用connect函数 但含义却不一样 下面我们分别来讨论一下 一 流式套接字 流式套接字通常使用的是
  • 2023年电赛E题详细讲解

    前言 E题是运动目标控制与自动追踪系统 其实就是一个红色激光追踪绿色激光 本文主要授人以渔 讲解思路 不含代码 建议自己编写 本文旨在和大家探讨一下更好的方案 欢迎讨论 读题 做题肯定是要读题的 本节主要是将一些主要的点 并反推出题人的出题
  • 按键的短按和长按检测

    方法一 常用的加延时函数 在中断服务函数中加一个比如10ms的延时函数 延时时间的长短取决于实际所用的按键特性 只要延时时间比抖动时间略大即可 原理很简单 加了延时就避开了抖动的这段时间 在延时之后判断引脚电平 如果为低电平就表示是按下 v
  • 下载 arm-linux-gcc

    https releases linaro org components toolchain binaries latest 4 arm linux gnueabihf 如果你使用的是ubuntu系统 你可以使用apt方式来安装arm li
  • keil mdk代码提示与代码补全设置

    主要参考https blog csdn net w5862338 article details 50520423 结合自己的实际问题 一旦习惯了一些实用的功能 当进入到类似的环境中而没有熟悉的功能 会觉得很不方便 代码提示与补全就是这样实
  • LWIP在STM32上的移植

    本文做记录摘抄 加上自己的体会 文章标题 STM32使用LWIP实现DHCP客户端 http www cnblogs com dengxiaojun p 4379545 html 该文章介绍了几点 LWIP源码的内容 关键点 1 inclu
  • STM32 IAP 在线升级详解

    扩展 IAP主要用于产品出厂后应用程序的更新作用 考虑到出厂时要先烧写IAP 再烧写APP应用程序要烧写2次增加工人劳动力基础上写了 STM32 IAP APP gt 双剑合一 链接稍后发 一 在进入主题之前我们先了解一些必要的基础知识 s
  • 四位数显表头设计

    去年帮别人定制了一个四位数显小表头 可以用于测量4 20mA或者0 5V 0 10V输出的的各种传感器 可设置显示范围 上下限报警灯 由于后面更改方案 此方案暂时搁置不用 今天来分享一下软硬件的设计过程 1 硬件设计 1 1电源 电源采用一
  • Java语言真的跌落神坛了吗?

    Java语言真的跌落神坛了吗 在开始前我有一些资料 是我根据自己从业十年经验 熬夜搞了几个通宵 精心整理了一份 Java的资料从专业入门到高级教程 工具包 点个关注 全部无偿共享给大家 在评论区回复 888 之后私信回复 888 即可拿走
  • 锂电池管理系统(BMS)

    引言 在现代科技的推动下 锂电池已经成为各种电动设备和能源存储系统的首选能源媒介 然而 锂电池在充电和放电过程中存在一系列潜在的安全隐患 同时其性能和寿命也受到一些限制 为了解决这些问题 锂电池管理系统 BMS 应运而生 BMS不仅仅是一个

随机推荐

  • 微信小程序实现js控制动画——点击播放动画

    功能需求 点击刷新图标 图标旋转进入Loading状态 加载完毕 动画停止 index wxml
  • JAVA中 IO输入输出流的基本用法和文件复制的案例

    IO 即in和out 也就是输入和输出 指应用程序和外部设备之间的数据传递 常见的外部设备包括文件 管道 网络连接 Java 中是通过流处理IO 的 那么什么是流 流 Stream 是一个抽象的概念 是指一连串的数据 字符或字节 是以先进先
  • npm .npmrc作用

    在执行npm install g cordova ionic时出错 可以修改npm源 npm全名Node Package Manager npmrc文件的作用 就是配置npm源 该文件在C盘用户文件目录下 eg 淘宝源 registry h
  • ORCAD 16.6使用说明及技巧

    1 元器件基本操作 R 翻转 H 左右镜像 V 上下镜像 I 放大视图 O 缩小视图 2 选中工程根文件夹 点击Edit Browse Parts Nets等可查看所有信息 3 元件属性 白色 instance 平坦式 黄色 occuren
  • socket原理以及socket的简单实现

    目录 一 socket学前基础 TCP的三次握手和四次挥手 二 为什么要使用socket 三 什么是socket 四 socket的简单代码实现 服务端 客户端 一 socket学前基础 TCP的三次握手和四次挥手 1 服务端和客户端如果想
  • python怎么绘制渐变图_有没有一种使用Python生成渐变位图的简单方法?

    实现这一点的一种方法是使用matplotlib 正如您在标记中建议的那样 为了做到这一点 我会的使用numpy创建一个NxN数组来表示image gradient 在 创建一个figure 其大小以英寸为单位与圆的半径 image circ
  • 浏览器console几种报错类型

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 SyntaxError 语法错误 2 TypeError 类型错误 通常是 is not a function 即 不是一个函数 3 ReferenceError 引用
  • 开启电脑虚拟化功能

    一 查看笔记本是否支持虚拟化 打开任务管理器 同时摁住ctrl alt del这个三个健 选择任务管理器 查看是否开启虚拟机 如果未开启 一 进入BIOS 参考以下按键 开机时按住对应的键进入BIOS 组装机以主板分 华硕按F8 Intel
  • 最强自动化测试框架Playwright-(2)元素定位

    元素定位 定位器是playwright自动等待和重试功能的核心部分 简而言之 定位器表示一种随时在页面上查找元素的方法 Locators Playwright Python 如下这些是推荐的 page get by role 按显式和隐式辅
  • 关于window.open()方法 返回的的打开的新窗口的对象

    关于window open 方法 返回的的打开的新窗口的对象
  • Dump libasound 音频数据

    QNX有如下两种方法dump pcm数据 可以录声卡之前的数据 1 QNX自带的pcm logger工具 工具位置 qnx qnx sdp target qnx7 aarch64le usr bin pcm logger 打开pcm dum
  • 计算机网络-运输层

    To 个人主页 关注不迷路 运输层 重要概念 运输层为相互通信的应用进程提供逻辑通信 端口和套接字的意义 无连接的 UDP 的特点 面向连接的 TCP 的特点 在不可靠的网络上实现可靠传输的工作原理 停止等待协议和 ARQ 协议 TCP 滑
  • 蓝桥杯:外卖店优先级(map排序算法) Java

    分析 发现只是输入两种数据 则可以考虑用map 经过分析发现 可以用店家编号来表示map的第一个参数Integer 第二个参数因为有可能有多个相同的时刻 所以用arraylist
  • 一, SpringCloud Alibaba-nacos注册中心

    1 nacos官网 https nacos io zh cn https nacos io zh cn docs what is nacos html https github com alibaba spring cloud alibab
  • c++拷贝与引用讲解

    目录 拷贝与引用 2 const限定符 3 const与指针 拷贝与引用 1 拷贝 即复制 在初始化变量时 初始值会被拷贝到新建的对象中 对象会开辟一块新的内存空间用来存储该变量 int a 10 int b a std cout lt l
  • 广播到底啥啊,arp广播原理

    1网络广播 网络广播是指一个节点同时向相同域中的其它所有节点传输数据包的过程 例如 有4台主机 分别为1号主机 2号主机 3号主机 4号主机 假如1号主机 要给4号主机发数据 如果是用广播传输方法的话 那么4台主机都会收到数据包 4台主机
  • ChatGpt 从入门到精通

    相关资源下载地址 基于ChatGPT的国际中文语法教学辅助应用的探讨 pdf 生成式人工智能技术对教育领域的影响 关于ChatGPT的专访 pdf 电子 从ChatGPT热议看大模型潜力 pdf 从图灵测试到ChatGPT 人机对话的里程碑
  • Python爬虫-使用Selenium模拟百度登录

    前言 前面我已经安装好了Selenium并模拟成功了一下打开百度页面并进行查询 让我这个python初学者信心倍增 今天再来试一试百度登录 正文 把打开百度的代码放到构造方法中 ps 那个文件目录是用于后面滑块验证图片保存的 def ini
  • linux最简单预览摄像头方法

    我只想要打开摄像头 想当然就是用ffplay centos如何安装ffplay 找了一通都是编译安装 编译安装也就算了 竟然没有生成ffplay 搜了一通解决ffmpeg编译安装没有生成ffplay的教程 累了 我到底在干什么 linux真
  • FatFs目录访问接口中文版

    我是阿荣 关注我 在技术路上一起精进 目录访问 f opendir 打开目录 函数原型 FRESULT f opendir DIR dp OUT Pointer to the directory object structure const