5

我的文件系统(iPhone)中有两个 xml 文件(a.xml 和 b.xml)。现在我想知道这些文件是否包含完全相同的数据。大多数情况下,这种比较是正确的,因为 b.xml 是 copyItemAtPath: 操作的结果。除非它被更新的信息覆盖。比较这些文件的最有效方法是什么?

  1. 我可以将文件的内容作为字符串读取,然后比较字符串
  2. 我可以解析文件并比较一些关键元素
  3. 我想有一种非常直截了当的方法,不需要解释文件,但可以让我在较低级别进行比较。

任何建议都非常受欢迎。

提前谢谢

夏克连

更新:

我最终这样做了:

oldData = [NSData dataWithContentsOfFile:PathToAXML];
newData = [NSData dataWithContentsOfFile:PathToBXML];

然后将其与:

[newData isEqualToData:oldData];

问题仍然是:这是否比:

oldData = [NSString dataWithContentsOfFile:PathToAXML];
newData = [NSString dataWithContentsOfFile:PathToBXML];

[newData isEqualToString:oldData];
4

3 回答 3

5

您还可以使用:

NSFileManager *filemgr = [NSFileManager defaultManager];

if ([filemgr contentsEqualAtPath:PathToAXML andPath:PathToBXML])
  NSLog (@"File contents match");
else
  NSLog (@"File contents do not match");
于 2011-09-30T07:04:04.307 回答
3

比较文件内容的一种替代方法是跟踪文件修改日期——如果它晚于您创建副本的日期,您可能会认为它已被更新。

请参阅类中的fileAttributesAtPath:traverseLink:。NSFileManager

于 2009-07-02T14:20:17.870 回答
1
BOOL filesAreEqual = [[NSData dataWithContentsOfMappedFile:file1] isEqual:[NSData dataWithContentsOfMappedFile:file2]];
于 2009-07-02T14:32:18.703 回答