NSFileManager方法contentsEqualAtPath:andPath:是创建一个动态校验和来比较两个文件,还是打开文件头并比较文件头细节,还是使用其他方法进行比较?
我有一个大约200000个文件的列表来比较本地文件与远程服务器卷上的文件的位置。本地文件将在过去的某个时候从远程服务器卷中复制,我将遍历文件列表来比较每个文件,然后将任何较新的文件从远程服务器卷复制到本地计算机(覆盖任何现有的文件)。不能保证远程服务器文件是由本地用户创建的(而且更有可能不是这样)。
因为文件很小(大约。一个复杂的文件比较操作可能需要的时间几乎和复制操作一样长。
这个操作可能(可以想象,但不太可能)在用户会话中多次发生,所以我需要确保我使用的是最有效的检查方法。
操作本身将在一个单独的线程上运行,因此在操作完成时,我没有绑定用户的问题。
我已经启动了这个实现来测试这一点,但是我感兴趣的是,是否还有其他人有过快速比较数千个文件的经验,以便确定如果存在更新的文件,哪些文件需要更新。如果你有,你有什么指示或陷阱可以避免吗?
任何建议都很感激。
更新
考虑到这一点,可能更有益的做法是保留一个跟踪任何更改图像的上一次更新时间戳的文件,并保留一个执行相同操作的本地文件,并对这两个文档进行比较。会随着我的进步而更新更多。
发布于 2010-10-05 18:11:32
在我看来,对于目录,只比较文件名(和子目录的文件名)。只有当您将文件路径显式传递给方法时,它才会比较文件内容。
https://stackoverflow.com/questions/3866037
复制相似问题