首页 > 解决方案 > 如何使用 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(...)。如何以正确的方式做到这一点?

标签: cstm32stm32f1fatfs

解决方案


首先定义 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);

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


推荐阅读