Macos 对于映射目录的内容,CFURLEnumerator和nsdirectorynumerator之间是否存在差异?

Macos 对于映射目录的内容,CFURLEnumerator和nsdirectorynumerator之间是否存在差异?,macos,cocoa,directory,traversal,core-foundation,Macos,Cocoa,Directory,Traversal,Core Foundation,我正在进行一个项目,在这个项目中,我需要递归地遍历给定文件夹的子目录,并基本上获取该文件夹中所有子目录的路径。CFURLEnumerator和nsdirectorynumerator都可以这样做,但我无法决定使用哪一个。两者之间有速度差吗 如果有人有这方面的经验,我将不胜感激。我认为速度上的任何差异都会被必须从磁盘读取目录结构的事实所淹没。我总是使用NS版本,因为可可比核心基础工作要容易一点。 < P>我认为速度的任何差异都会被你不得不从磁盘上读取目录结构的事实所淹没。我总是使用NS版本,因为C

我正在进行一个项目,在这个项目中,我需要递归地遍历给定文件夹的子目录,并基本上获取该文件夹中所有子目录的路径。CFURLEnumerator和nsdirectorynumerator都可以这样做,但我无法决定使用哪一个。两者之间有速度差吗


如果有人有这方面的经验,我将不胜感激。

我认为速度上的任何差异都会被必须从磁盘读取目录结构的事实所淹没。我总是使用NS版本,因为可可比核心基础工作要容易一点。

< P>我认为速度的任何差异都会被你不得不从磁盘上读取目录结构的事实所淹没。我总是使用NS版本,因为COCOA比核心基础更容易操作。

< P> <代码> NSDirectoryEnumerator <代码>使用<代码> CFURLEnumerator < /代码>,因此您将看到性能上几乎没有差别。


CFURLEnumerator
提供了两个枚举器选项-
kcfurenumeratorincludedirectoriespreorder
kcfurenumeratorincludedirectoriesstorder
,这些选项未被Cocoa API公开。如果需要控制在递归枚举期间何时返回目录,则这些选项非常有用。例如,如果要使用
CFURLEnumerator
枚举和删除目录层次结构的内容,则需要在删除目录的子体后删除目录。
kcfurenumeratorincludeDirectoriesStorder
选项允许您在看到其所有子代后查看目录URL。

NSDirectoryEnumerator
使用
CFURLEnumerator
,因此您将看到性能上的微小差异


CFURLEnumerator
提供了两个枚举器选项-
kcfurenumeratorincludedirectoriespreorder
kcfurenumeratorincludedirectoriesstorder
,这些选项未被Cocoa API公开。如果需要控制在递归枚举期间何时返回目录,则这些选项非常有用。例如,如果要使用
CFURLEnumerator
枚举和删除目录层次结构的内容,则需要在删除目录的子体后删除目录。
kcfurenumeratorincludedirectoriesstorder
选项让您在看到所有的子代后可以看到目录URL。

您认为使用
NSTask
和调用
find
会更好吗?@newenglander No。这会增加创建一个全新进程的额外开销。您认为使用
NSTask
和调用
find
会更好?@newenglander No.这会增加创建一个全新流程的额外开销。