Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Objective-C复制或移动文件的最佳方法?_Objective C_Macos_File Io - Fatal编程技术网

使用Objective-C复制或移动文件的最佳方法?

使用Objective-C复制或移动文件的最佳方法?,objective-c,macos,file-io,Objective C,Macos,File Io,我想知道,有没有一个最佳实践来编写一个OSX程序,将文件从一个地方复制或移动到另一个地方 有什么方法可以调用吗 我必须使用输入/输出流吗 或者仅仅依靠向查找器传递命令是最好的方法 附加问题:我如何通过这些方法之一获得“拷贝完成12%”的百分比 谢谢你的帮助 NSFileManager和NSWorkspace都有移动、复制和删除文件的方法。通常您会使用NSFileManager,因为它更易于使用: if ( [[NSFileManager defaultManager] isReadableF

我想知道,有没有一个最佳实践来编写一个OSX程序,将文件从一个地方复制或移动到另一个地方

  • 有什么方法可以调用吗
  • 我必须使用输入/输出流吗
  • 或者仅仅依靠向查找器传递命令是最好的方法
附加问题:我如何通过这些方法之一获得“拷贝完成12%”的百分比


谢谢你的帮助

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 replaces
performFileOperation
?@matt请参阅