0

我在 MacOS 上对文件进行逐字节复制,因此我丢失了有关该文件的所有文件头数据(即 LastModified、CreateDate 等)。

我不想使用 copyItemAtURL,因为它没有给我我需要的细粒度控制,特别是允许取消复制、进度更新、暂停等功能。但我确实想模仿 copyItemAtURL 对文件的作用标头数据 - 我只是不知道那是什么。

我知道如何掌握基础知识,从源文件中获取 NSURLContentModificationDateKey、NSURLCreationDateKey,并将其应用于目标文件。

我的问题是:我还应该确保从原始文件传输到新文件吗?标签?安全信息?

任何建议都非常感谢!

编辑

我确实在这里的苹果文档中找到了一些关于元数据的一般指导,但它并没有真正指出在什么条件下应该填充哪些元数据。

4

1 回答 1

2

这曾经由旧的基于 Carbon 的文件管理器中的FSCopyObjectAsync API 支持,不幸的是,从 OS X 10.8(又名 Mountain Lion)开始,它已被弃用。

FSCopyObjectAsync 的文档将读者引导至copyItemAtURL:toURL:error或 POSIX copyfile函数。后者似乎提供了您正在寻找的控制。

注意:我个人对 copyfile(); 没有任何了解。YMMV。

一般来说,采用专门为复制文件而提供的高级 API 比使用低级原语滚动您自己的 API 更好。它们不仅会大大减少您必须编写的代码量;它们还将使您的应用程序面向未来,因为在将来的某些操作系统版本中添加到文件系统的任何内容很可能会自动得到支持。

为了完整起见,这里有一篇文章(书面预弃用)解释了如何使用 FSCopyObjectAsync执行文件复制和进度指示器。

于 2013-03-23T03:03:59.810 回答