硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2600|回复: 0
收起左侧

[FatFs] 关于FATFS下f_readdir去查看文件index的问题

[复制链接]

11

主题

43

回帖

76

积分

初级会员

积分
76
发表于 2020-7-9 15:56:42 | 显示全部楼层 |阅读模式
FRESULT result;
        FATFS fs;
        DIR DirInf;
        FILINFO FileInf;
        uint32_t cnt = 0;
        char lfname[256];
        uint8_t read_buf[10];
        uint8_t spi_read_buf[10];
        uint8_t res = 0;
        uint32_t ID = 0;

        /* 挂载文件系统 */
        result = f_mount(&fs, "0:", 0);        /* Mount a logical drive */
        if (result != FR_OK)
        {
                printf("挂载文件系统失败 (%s)\r\n", FR_Table[result]);
        }

        /* 打开根文件夹 */
        result = f_opendir(&DirInf, "0:"); /* 如果不带参数,则从当前目录开始 */
        if (result != FR_OK)
        {
                printf("打开根目录失败  (%s)\r\n", FR_Table[result]);
                return;
        }

        /* 读取当前文件夹下的文件和目录 */
#if _USE_LFN
        FileInf.lfname = lfname;
        FileInf.lfsize = 256;
#endif
       
        printf("属性        |  文件大小 | 短文件名 | 长文件名\r\n");
        for (cnt = 0; ;cnt++)
        {
                result = f_readdir(&DirInf,&FileInf);                 /* 读取目录项,索引会自动下移 */
                if (result != FR_OK || FileInf.fname[0] == 0)
                {
                        break;
                }

                if (FileInf.fname[0] == '.')
                {
                        continue;
                }

                /* 判断是文件还是子目录 */
                if (FileInf.fattrib & AM_DIR)
                {
                        printf("(0x%02d)目录  ", FileInf.fattrib);
                }
                else
                {
                        printf("(0x%02d)文件  ", FileInf.fattrib);
                }
                printf(" %d",DirInf.index);

                /* 打印文件大小, 最大4G */
                printf(" %10d", FileInf.fsize);
               
               
                printf("  %s |", FileInf.fname);        /* 短文件名 */
//                res = f_unlink(FileInf.fname);
//                if(res == FR_OK)
//                {
//                        printf("  %s 删除成功 ", FileInf.fname);
//                }

                printf("  %s\r\n", (char *)FileInf.lfname);        /* 长文件名 */
        }

        /* 卸载文件系统 */
         f_mount(NULL, "0:", 0);

以上是硬汉哥的代码 我就加了在遍历根目录下文件的时候打印printf(" %d",DirInf.index),这个index的值很奇怪 都是2的倍数

以下是打印结果
属性        |  文件大小 | 短文件名 | 长文件名
(0x32)文件   2    2097152  SPEED00.TXT |  Speed00.txt
(0x32)文件   4    2097152  SPEED01.TXT |  Speed01.txt
(0x32)文件   6    2097152  SPEED02.TXT |  Speed02.txt
(0x32)文件   8    2097152  SPEED03.TXT |  Speed03.txt
(0x32)文件   10    2097152  SPEED04.TXT |  Speed04.txt
(0x32)文件   12    2097152  SPEED05.TXT |  Speed05.txt

请问硬汉哥这是什么问题


回复

使用道具 举报

0

主题

0

回帖

0

积分

新手上路

积分
0
发表于 2020-7-18 19:28:50

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 15:19 , Processed in 0.164728 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表