2012-04-02 12 views
1

Ich arbeite an einem Projekt, wo ich rekursiv durch die Unterverzeichnisse eines bestimmten Ordners durchlaufen muss, und im Wesentlichen die Pfade aller untergeordneten Elemente in diesem Ordner abrufen. Sowohl der CURLEnumerator als auch der NSDirectoryEnumerator tun das, aber ich kann mich nicht entscheiden, welcher zu verwenden ist. Gibt es einen Geschwindigkeitsunterschied zwischen den beiden?Gibt es einen Unterschied zwischen dem CURLEnumerator und dem NSDirectoryEnumerator, um den Inhalt eines Verzeichnisses zuzuordnen?

Ich würde gerne hören, wenn jemand Erfahrung damit hatte.

Antwort

3

Ich denke, jeder Unterschied in der Geschwindigkeit würde durch die Tatsache überschwemmt werden, dass Sie die Verzeichnisstruktur von der Festplatte lesen müssen. Ich würde immer mit der NS-Version gehen, weil Cocoa etwas einfacher zu bearbeiten ist als Core Foundation.

+0

Glaubst du, '' NSTask'' und 'find' zu verwenden wäre besser? – newenglander

+0

@newenglander Nein. Das hat den zusätzlichen Aufwand, einen ganz neuen Prozess zu erstellen. – JeremyP

1

NSDirectoryEnumerator verwendet CFURLEnumerator, so dass Sie sehr wenig Unterschied in der Leistung sehen werden.

CFURLEnumerator bietet eine Reihe von Enumeratoroptionen - kCFURLEnumeratorIncludeDirectoriesPreOrder und kCFURLEnumeratorIncludeDirectoriesPostOrder - die nicht von Cocoa API verfügbar gemacht werden. Diese Optionen sind nützlich, wenn Sie steuern müssen, wann Verzeichnisse während rekursiver Enumerationen zurückgegeben werden. Wenn Sie zum Beispiel CFURLEnumerator verwenden möchten, um den Inhalt einer Verzeichnishierarchie aufzulisten und zu löschen, müssen Sie die Verzeichnisse löschen, nachdem Sie die Nachkommen der Verzeichnisse gelöscht haben. Mit der Option kCFURLEnumeratorIncludeDirectoriesPostOrder können Sie die Verzeichnis-URL anzeigen, nachdem Sie alle ihre Nachkommen angezeigt haben.

Verwandte Themen