<4> 程序实现方法简述
首先调用函数trace_path搜索文件系统中是否存在目标目录,因为是新建目录肯定不存在。那么不存在目录时就返回新建目录所在当前文件夹的目录指针(dirscan、dir)--第一个空目录项位置,并且将当前目录指针所在扇区的内容加载到win[]中。
接下来给新建目录在当前文件夹中预定一个目录项位置。然后调用creat_chain函数在FAT表中为新建目录找到一个可用的数据簇,再调用move_window(0)同步FAT表到磁盘中。为新建目录的数据簇初始化,并且初始化第一个目录项。最后,填入新建目录的目录项初始值(目录名、属性、创建时间 、数据簇起始位置)到win[]中。然后同步到磁盘中,完成整个新建目录的工作。
☆ 注意
<1> 创建一个新目录,不仅会在其上一层目录中添加对应的目录项并初始化,并且会给新建目录分配一个簇的数据空间,并进行初始化。
<2> 新建一个目录时,会将新建目录的数据簇和对应目录项所在扇区都同步到磁盘中,这与文件必须通过调用f_sync才能同步是不一样的。
<3> 新建一个目录会给目录分配数据空间,而新建文件则是没有的,这也是一个巨大的差别。
<4> 新建一个目录的所有操作都是在win[]中进行的,不管是新建目录的对应目录项,还是新建目录的数据空间都是在win[]中进行的。 |