nsfilemanager content sakealatpath:andpath:チェックサムデータを比較します
-
28-09-2019 - |
質問
どうしますか NSFileManager
方法 contentsEqualAtPath:andPath:
ダイナミックチェックサムを作成して2つのファイルを比較すると、ファイルヘッダーを開き、ファイルヘッダーの詳細を比較しますか、それとも比較するために他の方法を使用しますか?
Localファイルをリモートサーバーのボリューム上のファイルと比較する場所を比較するために、200,000個ほどのファイルのリストがあります。ローカルファイルは過去のある時点でリモートサーバーのボリュームからコピーされていたでしょう。私はファイルのリストを歩いてそれぞれを比較してから、リモートサーバーのボリュームからローカルマシンに新しいファイルをコピーします(任意のものを上書きする既存)。リモートサーバーファイルがローカルユーザーによって作成されたという保証はありません(おそらくそうではなかったでしょう)。
ファイルが小さいため(サイズは約4K)、複雑なファイル比較操作はコピー操作とほぼ同じ時間がかかる場合があります。
この操作は、ユーザーセッションで複数回発生する可能性がありますが(おそらくそうではありませんが)、チェックに最も効率的な方法を使用していることを確認する必要があります。
操作自体は別のスレッドで実行されるため、操作が完了している間にユーザーを縛るという問題はありません。
私はこれをテストするための実装を開始しましたが、新しいファイルが存在するかどうかを更新する必要があるかを判断するために、他の誰かが何千ものファイルを迅速に比較した経験があるかどうかを確認することに興味がありました。もしあなたが持っているなら、あなたは避けるべきポインターや落とし穴はありますか?
どんなアドバイスも大歓迎です。
アップデート
これについてもう少し考えると、変更された画像の最後の更新されたタイムスタンプを追跡するファイルを保持し、同じことを行うローカルファイルを保持し、これらの2つのドキュメントを比較するだけで、より有益かもしれません。
解決
ディレクトリの場合、ファイル名(およびサブディレクトリのファイル名)のみが比較されるように見えます。ファイルパスをメソッドに明示的に渡す場合にのみ、ファイルコンテンツを比較します。