FatFs-目录下文件扫描

本文介绍了用于小型嵌入式系统的通用FAT/exFAT文件系统模块FatFs。它按ANSI C编写,独立于磁盘I/O层和平台,可集成到小型微控制器。还阐述了其特性,如兼容DOS/Windows、易移植、占用空间小等,最后提及文件夹移植和目录文件扫描。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FatFs - 通用的FAT文件系统模块

FatFs是用于小型嵌入式系统的通用FAT/exFAT文件系统模块。FatFs模块是按照ANSI C (C89)编写的,完全独立于磁盘I/O层。因此它是独立于平台的。在资源有限的情况下,可以集成到小型微控制器中,如8051、PIC、AVR、ARM、Z80、RX等。这里也提供了用于微型微控制器的Petit FatFs模块。

官方网站:http://elm-chan.org/fsw/ff/00index_e.html

FatFs-目录下文件扫描

 

特性

  • DOS/Windows兼容的FAT/exFAT文件系统。
  • 平台独立的。容易端口。
  • 程序代码和工作区域占用的空间非常小。
  • 各种配置选项,以支持:
  • 长文件名在ANSI/OEM或Unicode。
  • exFAT文件系统。
  • 线程安全的RTOS。
  • 多个卷(物理驱动器和分区)。
  • 变量扇区大小。
  • 多个代码页,包括DBCS。
  • 只读,可选的API, I/O缓冲区等等…

FatFs-目录下文件扫描

带有FatFs模块的嵌入式系统的典型配置,但不是特定的配置。

FatFs-目录下文件扫描

 

  • 如果为FatFs提供了一个工作磁盘模块,则不需要其他任何东西。
  • 为了将现有的具有不同接口的磁盘驱动器连接在一起,需要一些粘合功能来转换FatFs和驱动程序之间的接口。

FatFs-目录下文件扫描

 

  • FatFs既不关心使用哪种存储设备,也不关心如何实现。只有一个要求是,它是一个用固定大小的块读取/写入的块设备,可以通过上面定义的磁盘I/O函数访问。

FatFs-目录下文件扫描

Fatfs文件夹移植

目录下文件扫描

 
  1. FATFS fatsd; //定义文件系统对象结构

  2. f_mount(&fatsd,"0:",1); //挂载SD卡

  3. FRESULT scan_files(char *path)

  4. {

  5. FRESULT res; //定义结果对象

  6. DIR dir; //定义目录对象

  7. UINT i; //定义变量

  8. static FILINFO fno; //定义静态文件信息结构对象

  9. res = f_opendir(&dir,path); //打开目录,返回状态 和 目录对象的指针

  10. char pathBuff[256]; //定义路径数组

  11. if(res == FR_OK) //打开成功

  12. {

  13. for(;;) //遍历

  14. {

  15. res = f_readdir(&dir, &fno); //读取目录,返回状态 和 文件信息的指针

  16. if(res != FR_OK || fno.fname[0] == 0)

  17. break; //若打开失败 或 到结尾,则退出

  18. if(fno.fattrib & AM_DIR) //是目录

  19. {

  20. i = strlen(path); //获取原目录长度

  21. sprintf(&path[i],"/%s",fno.fname); //将新目录添加在原目录后面

  22. printf("是目录::%s

  23. ",path);

  24. res = scan_files(path); //将新目录进行递归调用

  25. if(res != FR_OK) break; //打开失败则退出

  26. path[i] = 0;

  27. }else

  28. {

  29. printf("是文件:%s/%s

  30. ",path,fno.fname); //是文件

  31. //strcpy(pathBuff, fno.fname); //将文件目录存储起来

  32. }

  33. }

  34. }

  35. else

  36. {

  37. printf("失败 - %s

  38. ",&res); //打开失败

  39. }

  40. f_closedir(&dir); //关闭目录

  41. return res; //返回状态

 

https://blog.youkuaiyun.com/sxf1061700625/article/details/84313759

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值