c - 如何使用 FatFs 获取文件名?
问题描述
我不明白如何使用 FATFS 在 SD 卡中获取文件名。我可以.txt
使用以下代码读取和写入文件:
if (f_mount(&fatfs, SDPath, 1) == FR_OK) {
/* Write Test */
res = f_open(&file, (const TCHAR*)"TESTTEST.TXT", FA_WRITE | FA_CREATE_ALWAYS);
res = f_write(&file, txtWriteBuf, strlen((const char*)txtWriteBuf), &bytesW);
res = f_close(&file);
/* Read Test */
res = f_open(&file, (const TCHAR*)"TESTTEST.TXT", FA_READ);
res = f_read(&file, txtReadBuf, f_size(&file), &bytesR);
res = f_close(&file);
/* File Listing Code */
???
/* LCD Display Code */
...
/* My LCD Codes Here */
}
之后,我想在我的 LCD 屏幕上列出这些文件名。我一直在获取根目录中的文件名。我希望这些文件列在我的 LCD 上。而且我不知道如何使用f_opendir(...)
等f_readdir(...)
。如何以正确的方式做到这一点?
解决方案
首先定义 DIR 和 FILINFO 结构:
DIR dir; // Directory
FILINFO fno; // File Info
然后您可以使用以下代码作为示例:
f_opendir(&dir, "/"); // Open Root
do
{
f_readdir(&dir, &fno);
if(fno.fname[0] != 0)
printf("File found: %s\n", fno.fname); // Print File Name
} while(fno.fname[0] != 0);
f_closedir(&dir);
您也可以添加错误检查以保持一致,我使用自己的断言因此省略。
推荐阅读
- c# - 不重复文本文件中的行
- java - 如何在java中增加泛型类型值
- java - Spring Boot 现有域 .cert 文件实现我的应用程序(SSL)
- python - 如何在 Python 中使用 OpenCv 将图像添加到视频中?
- redis - redis-cli 如何使用密码进行身份验证并发出命令?
- r - Cbind 列表的元素
- html - Paypal 多币种按钮购买
- grafana - 在 Grafana 中创建警报 - 基于 2 个时间序列之间的增量
- mysql - 数据库包装器 - 异构服务
- angular - 使用在 nginx 中运行的 Angular 应用程序在 docker 中运行 testcafe