1. 主页
  2. 自己动手从0到1学写FAT32文件系统
  3. 第3章 文件操作
  4. 实现子目录的打开

实现子目录的打开

内容纲要

本课程提供了打开指定目录下的子文件或目录的接口。

主要内容

具体实现较为简单,此处略。

重点难点

list_sub_files可能出现错误

最常见的错误就是递归调用一直出不来,导致递归调用层次过多,最后堆栈溢出,程序崩溃。

这个问题没有其它解决办法,只能调试程序,然后跟踪调试。

在课程中,设定的是遍历根目录的所有文件,如下所示:

err = xfile_open(&xfat, &top_dir, "/read/..");

可以适当调整路径,将其设定成其它更容易测试的目录的目录,比如read目录,或者自行创建一个/A/B/这种两层的小目录。这样测试起来更加方便,更有助于发现问题。

另外,一旦出错,务必对照课程的源码进行比对。

强烈建议在学习时,直接跟着课程中步骤写,视频中怎么写,你就怎么写。这样有一旦出现问题,可以直接对比课程例程的源码及其运行过程。哪怕是在QQ群里求助时,老师和同学也更加方便解答。

如果想自由发挥,先务必在完成课时的基础之后,另起工程。

注意事项

xfile_open_sub接口不是必需

后续随着课程内容的完善,这个接口函数有可能会被去掉,转而被其它方式取代。

例如,后期可能会提供切换当前目录的功能接口,以及将打开文件的路径设置成支持打开相对路径。这样当要打开A目录下的B文件时,可以先通过该接口将当前目录设置为A目录,然后再调用文件打开函数,以相对路径的方式直接打开B文件。

以上就可以完全取代xfile_open_sub。

常见问题

这篇文章对您有用吗?

我们要如何帮助您?

发表评论

电子邮件地址不会被公开。 必填项已用*标注