5

ファイル システム (iPhone) に 2 つの 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 に答える