5

私は次のことをしようとしています:

  • ファイルの属性を読み取る
  • 属性が特定の条件に一致する場合は、ファイルを削除します

現在、私はに続いてNSFileManagerを実行するために使用しています。2つの操作の間に、最初のチェックを無効にする何かが発生するのではないかと心配しています。attributesOfItemAtPath:error:removeItemAtPath:error:

これらの2つの操作をアトミックにするための最良の方法は何ですか?

編集

これまでの回答は、私が調べてみたファイルロックを示唆しています。私が見つけた最も近いものはNSFileImmutable旗を立てることでした。しかし、他のプログラムがやって来て、設定を解除し、ファイルを変更する可能性があるようです。ファイルをロックするためのより良い方法はありますか?

編集2

誰かがユースケースを求めました。2つのフォルダの同期を維持しようとしているとしましょう。一方のフォルダ内のファイルに加えられた変更は、もう一方のフォルダに反映され、その逆も同様です。フォルダAからファイル1を削除すると、フォルダBからもファイル1が削除されます。ただし、フォルダBのファイル1が変更されると、削除する直前に変更されます。次に、削除する代わりに、フォルダーAに同期して戻します。

4

4 に答える 4

0

では、複数の属性クエリがありますか? もしそうなら、クエリを開始する前にファイルをロックしてみませんか? 完了したら、ロックを解除します。その後、削除する場合は削除します。

Cocoa でファイルをロックする方法があります。数日前にその問題をググって解決しましたが、特定のメッセージをすでに忘れていました。ごめん..

于 2012-08-05T02:53:03.803 に答える
0

この方法でファイルを受け入れるか削除するには、メッセージを使用することをお勧めします。

fileManager:shouldRemoveItemAtPath:

あなたの開発のプロトタイプは、メソッドを呼び出してファイルを削除し、メソッド shouldRemoveItemAtPath で、ファイル属性値として受け入れる (YES を返す) または拒否する (NO を返す) ことです。

この助けを願っています

于 2012-08-11T14:56:16.343 に答える
0

先に進んで、一致したファイルを削除する必要があるように思えます。他のアプリがファイルを削除できないように変更することを心配しない限り、ロックしても意味がありません。考えてみてください。削除条件に一致するファイルが見つかりました。あなたはそれを削除したい。その間に変更しても本当に問題ないのですか?

于 2013-02-04T16:38:35.017 に答える