首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FatFs获取文件名?

如何使用FatFs获取文件名?
EN

Stack Overflow用户
提问于 2021-10-13 08:23:14
回答 1查看 912关注 0票数 1

我不明白如何使用FATFS在SD卡中获取文件名。我能够用下面的代码读写.txt文件:

代码语言:javascript
复制
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 */
}

之后,我想在我的液晶屏幕上列出这些文件名。我无法在根目录中获取文件名。我要把这些文件列在我的液晶显示器上。我不知道如何使用f_opendir(...)f_readdir(...)等,如何正确地使用?

EN

回答 1

Stack Overflow用户

发布于 2022-02-08 19:59:33

首先定义DIR和FILINFO结构:

代码语言:javascript
复制
DIR dir;                    // Directory
FILINFO fno;                // File Info

然后可以使用以下代码作为示例:

代码语言:javascript
复制
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);

此外,您还可以添加错误检查以保持一致,因此我使用自己的断言省略。

对于长文件名,必须将ffconf.h中的文件名ffconf.h设置为1。此外,您还需要声明缓冲区,例如TCHAR lfname[_MAX_LFN];。之后,在代码中分配缓冲区及其大小:

代码语言:javascript
复制
fno.lfname = lfname;
fno.lfsize = _MAX_LFN - 1;

最后,您可以在上面提供的代码中用fname替换lfname

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69552076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档