0

NSFileManager を使用していくつかのデータをコピーしています:

success = [manager copyItemAtPath:[dirToCopyFrom stringByAppendingPathComponent:file] toPath:[dirToCopyTo stringByAppendingPathComponent:file] error:&copyError];

ただし、NSFileManager はこのプロセスを停止する方法を提供していないようです。方法はありますか?

ありがとう

4

3 に答える 3

4

ではありませNSFileManagerん。下位レベルのFSCopyObjectAsync関数にドロップする必要があります。

この関数の使用方法の例については、この質問を確認してください。

コピーをキャンセルする方法については、コピー コールバックに取得する最初のパラメーターはFSFileOperationRef. そのパラメーターを引数として渡すとFSFileOperationCancel()、コピーがキャンセルされます。(詳細については、この CocoaBuilder.com スレッドを参照してください)

于 2010-12-13T20:57:51.583 に答える
1

これはかなり古い質問ですが、まったく同じ問題があったので、偶然見つけました。処理するケースが多すぎるため、NSFileManager over Carbon メソッドを使用し、手動の再帰コピーを実装したいと思いました。NSFileManager は、ファイル操作のエラーを適切に解決します (たとえば、ボリューム間の移動、マウントされたネットワーク パスへの移動など)。 )。基本的に、エラーを発生させることで NSFileManager を停止できます。きれいではありませんが、適切に動作します。たとえば、NSFileManager を使用してディレクトリをある場所から別の場所に移動し、操作をキャンセルするオプションをユーザーに与えました。NSFileManager の「キャンセル不可」を回避するために、名前を変更しました内容がコピーされている間の宛先ディレクトリ。NSFileManager でエラーが発生し、コピー操作が正常に停止します。ただし、これはボリュームまたはコピー間の移動 (コピーまたはコピー削除が行われる場合) でのみ機能します。ボリューム内での移動の場合、OSX は名前の変更を行うだけで、これは実質的に瞬時です。

于 2011-12-16T16:58:09.897 に答える