> On Mar 30, 2015, at 7:44 PM, Daryle Walker <dary...@mac.com 
> <mailto:dary...@mac.com>> wrote:
> 
> NSFileManager’s “- moveItemAtURL: toURL: error:” method does a copy if the 
> source and destination file-URLs are on different volumes. Does “- 
> replaceItemAtURL: withItemAtURL: backupItemName: options: resultingItemURL: 
> error:” do similar? The docs for the latter don’t mention it. I’m worried 
> since those docs do mention temporary directories, that we have to do 
> different-volume detection (possibly harder than in the pre-X days) and 
> copying manually. I don’t want to do that, since Apple already includes that 
> logic in the former method.


My experience on Yosemite is that NSFileManager’s 
“replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:” 
method fails if the source and destination URLs are not on the same volume. The 
correct procedure, as I understand it, is to first create a temporary file 
using "URLForDirectory: inDomain:appropriateForURL:create:error:”, supplying 
NSItemReplacementDirectory for the directory parameter, NSUserDomain for the 
domain, and the destination URL as the URL. This will create a temporary 
directory on the same volume as the supplied URL in which you can then create 
your temp file. Then you can use the replaceItemAtURL method to replace the 
file contents. If you use NSTemporaryDirectory() instead of URLForDirectory, 
your temp file could end up on a different volume then the destination, and 
replaceItemAtURL may fail.

Marc Khadpe
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to