【问题标题】:How to get file names using FatFs?如何使用 FatFs 获取文件名?
【发布时间】:2021-10-13 08:23:14
【问题描述】:

我不明白如何使用 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(...)等。如何正确使用?

【问题讨论】:

标签: c stm32 stm32f1 fatfs


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2011-07-08
    • 2011-05-11
    相关资源
    最近更新 更多