Frage

Ist die NSFileManager Methode contentsEqualAtPath:andPath: eine dynamische Prüfsumme erstellen zwei Dateien zu vergleichen, ist es die Datei-Header öffnen und vergleichen Details Datei-Header oder hat sie verwenden eine andere Methode zum Vergleich?

habe ich eine Liste von 200.000 oder so Dateien zu vergleichen, wo die lokalen Dateien auf einem Remote-Server-Volume mit den Dateien verglichen werden. Die lokalen Dateien kopiert wurden in der Vergangenheit zu einem bestimmten Zeitpunkt von dem Remote-Server Volumen würden, und ich werde die Liste der Dateien zu Fuß jeweils zu vergleichen und dann über alle neueren Dateien aus dem Remote-Server-Volume auf dem lokalen Rechner kopierte (Überschreiben jeder bestehender). Es gibt keine Garantie, dass die Remote-Server-Dateien durch den lokalen Benutzer erstellt wurden (und mehr als wahrscheinlich würden sie gewesen nicht).

Da die Dateien klein sind (ca.. 4K in der Größe) eine komplexe Dateivergleichsoperation könnte fast so lang wie ein Kopiervorgang nehmen.

Diese Operation könnte (möglicherweise aber nicht wahrscheinlich) passiert mehrmals in einer Benutzersitzung so dass ich sicherstellen muß, dass ich die effizienteste Methode zur Überprüfung verwenden.

Die Operation selbst auf einem separaten Thread ausgeführt werden, so ich habe keine Probleme binden die Benutzer während des Vorgang abgeschlossen werden.

Ich habe die Umsetzung beginnt dies zu testen, wurde aber daran interessiert zu sehen, ob jemand irgendwelche Erfahrungen Tausende von Dateien, um schnell hatte zu vergleichen, um zu bestimmen, welche Dateien aktualisiert werden müssen, wenn eine neuere Version vorhanden ist. Und wenn Sie haben, haben Sie irgendwelche Hinweise oder Fallen zu vermeiden?

Jede Beratung sehr geschätzt.

Aktualisieren

Denken darüber mehr einige könnte es sinnvoll sein, eine Datei zu behalten, dass Spuren der letzte aktualisierte Zeitstempel aller geänderten Bilder und eine lokale Datei halten, die das gleiche tut und nur diese beiden Dokumente vergleichen ... aktualisieren mehr als ich Fortschritte.

War es hilfreich?

Lösung

Es sieht für mich, dass nur Dateinamen für Verzeichnisse (und Dateinamen der Unterverzeichnisse) verglichen werden. Er vergleicht nur Dateiinhalt, wenn Sie explizit Dateipfade die Methode übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top