出于教育目的,我正在滚动我自己的 FAT 阅读器(允许您浏览驱动器等)。我当前的问题是确定当前的工作目录(例如典型命令提示符中的提示符)。据我所知,目录表没有提供有关您到达那里的路径的信息。(我一直在按照我在这里找到的标准工作)因此,我目前的方法只是跟踪您通过的每个目录(即基本上每次cd <dir>
使用,将该值放入列表中,并在cd ..
是时删除最后一个用过的)
这就是问题所在。假设两条不同的路径将您带到同一个目录。如果您随后..
向上跟踪目录,则问题变得比仅从列表中删除最后一个目录名称更复杂。如果..
带你走你没有下来的路径,你实际上必须确定一个全新的工作目录。
如果 FAT 不允许无向循环,则此问题变得无关紧要。(我相信我读到某些文件系统不允许这种复杂性正是出于简化遍历的原因,但我找不到 FAT 的具体信息)我需要担心这个吗?换句话说,FAT 是用树还是一般图来描述的?
作为参考,我正在处理 FAT16 和 FAT32(顺便说一下在 Linux 上的 C 语言中,但我认为这无关紧要)