1. 程式人生 > >iOS 對比兩個檔案內容是否相同 MD5摘要 與 直接比較

iOS 對比兩個檔案內容是否相同 MD5摘要 與 直接比較

直接比較兩個檔案的內容

NSString *path = [[NSBundlemainBundle] bundlePath];

NSString *filePath1 = [path stringByAppendingPathComponent:@"3-g.txt"];

NSString *filePath2 = [path stringByAppendingPathComponent:@"4-g.txt"];

//    NSString* pathfilePath1 = [[NSBundle mainBundle] pathForResource:@"3-g" ofType:@"txt"];

//    -(BOOL)contentsEqualAtPath:path andPath:path2

MD5摘要比較

NSString *md5str1 = [self md5WithFilePath:filePath1];

NSString *md5str2 = [self md5WithFilePath:filePath2];

if ([md5str1 isEqualToString:md5str2])


- (NSString *)md5WithFilePath:(NSString *)path {

NSFileHandle *handle = [NSFileHandle

fileHandleForReadingAtPath:path];

if( handle== nil ) {

returnnil;

    }

CC_MD5_CTX md5;

CC_MD5_Init(&md5);

BOOL done = NO;

while(!done)

    {

NSData* fileData = [handle readDataOfLength: 256 ];

CC_MD5_Update(&md5, [fileData bytes], (CC_LONG)[fileData length]);

if( [fileData length

] == 0 ) done = YES;

    }

unsignedchar digest[CC_MD5_DIGEST_LENGTH];

CC_MD5_Final(digest, &md5);

NSString* s = [NSStringstringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",

                   digest[0], digest[1],

                   digest[2], digest[3],

                   digest[4], digest[5],

                   digest[6], digest[7],

                   digest[8], digest[9],

                   digest[10], digest[11],

                   digest[12], digest[13],

                   digest[14], digest[15]];

return s;

}