在Cocoa中,您是否必须执行任何特殊操作以确保在复制文件时复制资源分支?

时间:2009-10-30 18:11:57

标签: objective-c cocoa file-io

我原以为我可以做到这一点,但是我无法检查资源分叉是否适合乘车。

NSFileManager *fm = [NSFileManager defaultManager];
[fm copyPath:absSourcePath toPath:absDestinationPath handler:err];

编辑:我需要以兼容10.4-6的方式复制。 (是的,真的是10.4。)

3 个答案:

答案 0 :(得分:4)

是的,所有内容都会被复制,包括文件权限,子目录,符号链接,您可以为其命名。 documentation建议在10.5及更高版本中使用copyItemAtPath:toPath:error:,因此您可能希望在可能的情况下使用copyPath:toPath:handler:。它在10.4上不可用,因此您必须在那里使用{{1}}。

我想我应该注意,它可能取决于目标文件系统;我不知道如果它不支持资源分叉会发生什么。我想它会使用Apple Double

答案 1 :(得分:4)

NSFileManager复制资源派生。你不需要做任何事情。

昨天我发布了一个比较,我在复制文件时复制/丢失了不同的属性。我也测试了NSFileManager,它在复制文件时比大多数其他工具做得更好。

Comparison of tools and preservation of meta data

see it in full size

“50”列中NSFileManager为红色的原因是NSFileManager不检测硬链接文件。因此,不是制作硬链接,而是多次创建相同的文件,数据fork +资源分叉。所以资源分叉工作。

我的代码受backup bouncer

启发

答案 2 :(得分:0)

我很确定这仍然有效,但我有一段时间没有看到带有资源分支的文件,所以我不能肯定地说。

http://www.macosxhints.com/article.php?story=2002022409532098