使用Objective-C复制或移动文件的最佳方法?
我想知道,有没有一个最佳实践来编写一个OSX程序,将文件从一个地方复制或移动到另一个地方使用Objective-C复制或移动文件的最佳方法?,objective-c,macos,file-io,Objective C,Macos,File Io,我想知道,有没有一个最佳实践来编写一个OSX程序,将文件从一个地方复制或移动到另一个地方 有什么方法可以调用吗 我必须使用输入/输出流吗 或者仅仅依靠向查找器传递命令是最好的方法 附加问题:我如何通过这些方法之一获得“拷贝完成12%”的百分比 谢谢你的帮助 NSFileManager和NSWorkspace都有移动、复制和删除文件的方法。通常您会使用NSFileManager,因为它更易于使用: if ( [[NSFileManager defaultManager] isReadableF
- 有什么方法可以调用吗
- 我必须使用输入/输出流吗
- 或者仅仅依靠向查找器传递命令是最好的方法
谢谢你的帮助 NSFileManager和NSWorkspace都有移动、复制和删除文件的方法。通常您会使用NSFileManager,因为它更易于使用:
if ( [[NSFileManager defaultManager] isReadableFileAtPath:source] )
[[NSFileManager defaultManager] copyItemAtURL:source toURL:destination error:nil];
但是,NSWorkspace可以轻松地将文件移动到垃圾箱,这是NSFileManager无法做到的
[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:foldername destination:@"" files:filenamesArray tag:&tag];
查看文档,了解这两个类的更完整描述。(,)
[[NSFileManager defaultManager]copyItemAtPath:srcPath-toPath:dstPath-error:&error]
以下是指向类参考的链接:
您也可以使用函数。您可以显示文件复制进度,也可以使用FSCopyObjectAsync()取消文件复制。看看这个 FSCopyObjectAsync在OS X v10.8中不推荐使用
是FSCopyObjectAsync的替代方案。是带有进度回调的copyfile(3)的示例。我喜欢你在我问这个问题差不多3年后才回答这个问题。它现在可能比其他答案更正确,但在10.8中已被弃用。改为使用URL CopyItemAttribute。您可以使用copyfile(3),因为错误参数采用
(NSError**)
类型,所以最好建议[[NSFileManager defaultManager]copyItemAtPath:srcPath toPath:dstPath error:&error]
加上符号(&S)。performFileOperation
在10.11中被弃用:-(要将文件移动到垃圾箱,您仍然可以使用recycleURLs
@Klaas What replacesperformFileOperation
?@matt请参阅