2

我在 iPhone 上打开了一个文件,我正在通过网络发送数据(使用“_open”打开)。但是我可以从 iphone 的界面中删除文件。这是使用 NSFileManager 的 removeItemAtPath 完成的。

奇怪的是即使文件当前打开,removeItemAtPath 也会成功。

文件通过网络完美传输,并且 removeItemAtPath 在传输完成之前成功。那么 removeItemAtPath 是否会进行延迟删除?即,如果文件正在使用,它是否会排队以备后用?如果是这样,那么没有问题。

如果不是...有谁知道我怎样才能让 NSFileManager 实际报告它没有执行删除的事实?

谢谢!

4

1 回答 1

3

根据文件在

http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/fileManager:shouldRemoveItemAtPath

shouldRemoveItemAtPath如果操作应该继续,则返回 YES ,不一定表示它已经成功删除了该项目。文档指出:

讨论从这个方法返回 NO 会导致 NSFileManager 停止删除该项目。如果该项是目录,则也不会删除该项的任何子项。

阅读这让我相信这是一个异步操作,并且此方法的返回值不应用于确定文件是否已成功删除。我的猜测是它将对象排队等待删除,并且在文件不再使用时将被删除。

于 2010-10-22T15:20:35.960 回答