2010-12-13 52 views
0

我複製使用的NSFileManager一些數據:停止的NSFileManager過程

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

的NSFileManager似乎不提供停車然而這一過程的方式。有沒有辦法?

感謝

回答

4

不與NSFileManager,沒有。你必須降到較低的水平FSCopyObjectAsync函數。請參考this question

至於如何取消複製,您將要複製回調的第一個參數是FSFileOperationRef。將該參數作爲參數傳遞給FSFileOperationCancel()應取消該副本。 (見this CocoaBuilder.com thread for more info

+0

我想知道爲什麼蘋果沒有實現這一點。 – Pripyat 2010-12-14 10:56:25

1

這是一個相當古老的問題,但我只是偶然發現,因爲我有完全相同的問題;我想在Carbon方法上使用NSFileManager並實現手動遞歸複製,因爲處理的情況太多了,NSFileManager在解決文件操作中的錯誤方面做得很好(例如,在卷之間移動,移動到已安裝的網絡路徑等)。基本上,您可以通過誘發錯誤來停止NSFileManager。它不漂亮,但它正常工作。例如。我使用NSFileManager將目錄從一個位置移動到另一個位置,並且我給了用戶取消操作的選項;爲了解決NSFileManager的'un-cancellability',我只是重命名目標目錄,而其內容正在被複制; NSFileManager引發錯誤,複製操作乾淨地停止。這隻適用於卷或副本之間的移動,因爲對於卷中的移動,OSX只是進行重命名,這實際上是即時的。

0

我試着移動文件,因爲前面的文章建議,但移動不會導致copyItemAtURL返回一個錯誤。似乎蘋果已經棄用了一種沒有替代等效功能的方法。