我想在内存中使用结构和std :: vector为目录和文件创建一个CD内容树。 我不会详细扫描文件,我只对它们是目录或常规文件感兴趣。
最好和最快的方法是什么? 递归扫描会使CD单元头在驱动器周围跳转寻找文件/文件夹吗?
我想减少CD单元头的跳跃并使其尽可能快。 BTW:我正在使用UNIX和C / C ++。
答案 0 :(得分:3)
根据ISO 9660规范:
主卷描述符中包含的根目录记录描述了连续根目录的位置。 (与在UNIX中一样,目录显示为操作系统的特殊用途文件)。 目录条目连续存储在此区域中。在此位置开始评估ISO 9660文件名。根目录存储为范围或顺序系列的扇区,其中包含出现在根目录中的每个目录条目
根据这些信息,我认为头部跳跃是不可避免的。您将从此顶级目录开始,例如Track X Sector Y,扫描以查找要遍历的第一个目录,并在磁盘上向下移动。因此无论你的潜水方式如何,只要你进一步深入树中,头部就会跳跃。如果有一种方法可以根据轨道然后在扇区上扫描磁盘,那么这将带来好处,但我不确定如何做到这一点以及它是否值得实施。
您的决定不会影响CDFS的性能,而是影响您的流程开销。递归会产生分配给堆栈的开销,并且存在内存影响。但就CDFS来说,你的控制似乎更少。
我会说使用递归,因为它对树遍历具有逻辑意义