用原子探索者平台开发在使用fatfs文件系统时遇到一个问题,通过f_readdir读取到的文件列表没有升序排列。
主要函数:
f_open(fp, filename, FA_OPEN_ALWAYS|FA_READ|FA_WRITE) //创建文件
while(1)
{
res = f_readdir(&dir, &fileinfo); //读取文件夹
if(res != FR_OK || fileinfo.fname[0] == 0) break;
printf("filename: %s, dir.index=%d \r\n", fileinfo.fname, dir.index); //打印列表
}
第一步:
用f_open,创建1,2,3,4,5 5个txt文件。
用f_readir读取文件夹,可以读到1,2,3,4,5顺序排列的文件 (这一步正常)
filename: 1.txt, dir.index=1
filename: 2.txt, dir.index=2
filename: 3.txt, dir.index=3
filename: 4.txt, dir.index=4
filename: 5.txt, dir.index=5
第二步:
用f_unlink删除文件2,4.
用f_readir读取文件夹,可以读到1,3,5顺序排列的文件 (这一步也正常)
filename: 1.txt, dir.index=1
filename: 3.txt, dir.index=3
filename: 5.txt, dir.index=5
第三步:
用f_open,创建6.txt 和7.txt.
用f_readir读取文件夹,新建的文件插入到原来删除的序列中, 而不是加在最后,实际读取到的文件列表不是按照顺序排列。
filename: 1.txt, dir.index=1
filename: 6.txt, dir.index=6
filename: 3.txt, dir.index=3
filename: 7.txt, dir.index=7
filename: 5.txt, dir.index=5
求助论坛高手,如何才能让后来新建的文件的dir.index从最后开始计算,怎样才能使读取到顺序排列的文件列表,比如:
filename: 1.txt
filename: 3.txt
filename: 5.txt
filename: 6.txt,
filename: 7.txt,
|