我想知道,编写一个将文件从一个地方复制或移动到另一个地方的OSX程序是否有最佳实践?
奖金问题:如何使用其中一种方法获得“复制12%完成”的百分比?
感谢您的帮助!
答案 0 :(得分:52)
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,NSWorkspace)
答案 1 :(得分:13)
[[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:dstPath error:&error]
以下是类引用的链接:
答案 2 :(得分:5)
您还可以使用FSCopyObjectAsync功能。您可以显示文件复制进度,也可以使用FSCopyObjectAsync()取消文件复制 看一下这个post。
在OS X v10.8中不推荐使用FSCopyObjectAsync
copyfile(3)是FSCopyObjectAsync的替代方案。 Here是带有Progress Callback的copyfile(3)的示例。