我想尽可能快地复制(或移动)Mac OS X下的文件,同时保持对复制过程的控制: - 如果目标文件已存在,则可以询问(覆盖,跳过,重命名),即使它是复制目录的子目录。 - 有复制过程的进度(剩余时间,大小......)
感谢您的帮助
答案 0 :(得分:2)
学习如何执行此操作的好方法是查看开源项目的现有代码。我想到的一个工具可以完成您正在讨论的所有检查(检查是否存在,进度等)是rsync。
例如,如果您想学习如何向用户报告进度,请检查源解析“--progress”参数的位置,查看由此调用的函数,并尝试了解。在这种情况下,您将最终进入progress.c
,其中文件的内容是具有以下定义的函数
/**
* @param ofs Current position in file
* @param size Total size of file
* @param is_last True if this is the last time progress will be
* printed for this file, so we should output a newline. (Not
* necessarily the same as all bytes being received.)
**/
static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,
int is_last)
普通C,可在各种操作系统中移植 - 而不仅仅是OS X. 这可能不是你问题的直接答案,但可能会让你更进一步:)
答案 1 :(得分:1)
啊,所以你 可以 使用Objective C方法。古迪!
考虑[[NSFileManager defaultFileManager] copyItemAtURL:toURL:error:]
。我已经为您链接了Apple的文档。
看看&#34;讨论&#34;该方法的部分,它告诉你如何处理覆盖和重命名(即抛出错误时,调用委托方法,你可以调出自己的&#34;想要覆盖?&#34;警报等)。< / p>
此方法适用于10.6&amp;新。这是一种较旧的方法,适用于较旧的OSX版本。如果您需要它并且无法找到它的名称,请告诉我,我将编辑此答案以提供更多详细信息。