【问题标题】:Why changing directory using elm chan fatfs f_chdir doesnt effect directory structure?为什么使用 elm chan fatfs f chdir 更改目录不会影响目录结构?
【发布时间】:2022-12-31 16:53:19
【问题描述】:

我的文件夹结构是这样的: 我打开一个文件夹,然后使用 f_chdir 将我的目录更改为该文件夹。 问题是 f_chdir 不会更改我的目录结构变量。

-A1
   | A11 
   |     |
   |     A11.mp3
   | A12
   |     |
   |       A12.mp3
   | A1.mp3

-A2
   | A21 
   |     |
   |     A21.mp3
   | A22
   |     |
   |       A22.mp3
   | A2.mp3
root_path = "/A1";
newPath = "/A1/A11";
f_opendir(dir,root_path );
f_chdir(newPath);
f_readdir(dir,fno);// This results in fno.fname = "/A12"

f_readdir(dir,fno);// 结果是 fno.fname = "/A12"。 我怎样才能将此行为更改为此

f_readdir(dir,fno);// Resulting in fno.fname = "A11.mp3"

【问题讨论】:

    标签: c embedded stm32 fat fatfs


    【解决方案1】:

    f_readdir 仅适用于已打开的目录。 f_chdir 不会以任何方式影响您的 dir 变量。如果要更新dir,则重新打开需要的目录:

    f_closedir(dir);
    f_opendir(dir, newPath);
    f_readdir(dir, fno);
    

    或使用点目录:

    f_closedir(dir);
    f_chdir(newPath);
    f_opendir(dir, ".");
    f_readdir(dir, fno);
    

    【讨论】:

    • 那么如果我需要重新打开一个目录,f_chdir 有什么好处呢?
    • 老实说,我看不出有什么好处。可能这就是为什么这些功能是可选的。但是启用相对路径后,您可以使用 ... 目录名称,所以我想您可以做类似 f_chdir(".."); f_opendir(dir, "."); 的事情
    • 我希望用它来改变文件夹结构,因为 f_opendir 平均需要 20 毫秒,这对我来说是很多时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2016-05-02
    相关资源
    最近更新 更多