我想知道,有没有最好的做法来编写一个OSX程序,将文件从一个地方复制或移动到另一个地方?
我可以打电话给一些NSSomething方法吗?
我是否必须使用输入/输出流?
或者最好的方法是依靠将命令传递给finder?
奖金问题:如何使用这些方法之一获得百分比"复制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,NSWorkspace)
[[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:dstPath error:&error]
这是类引用的链接:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSFileManager/copyItemAtPath:toPath:error:
您还可以使用FSCopyObjectAsync函数.您可以显示文件复制进度,也可以使用FSCopyObjectAsync()取消文件复制.
看看这篇文章.
FSCopyObjectAsync在OS X v10.8中已弃用
copyfile(3)是FSCopyObjectAsync的替代方法.以下是带有Progress Callback的copyfile(3)的示例.