我正在使用下面的代码来计算我在应用程序包的“临时”文件夹中添加的文件的校验和。与所有较低的 iOS 版本相比,我在 iOS11.2 中得到不同的校验和值。我想知道这些版本之间发生了什么变化?iOS 11.2 中文件系统的一些变化是造成差异的原因吗?有人可以阐明这个问题或面临类似的问题吗?下面是我使用的一段代码。
NSString* bundleRootDir;
bundleRootDir = [[NSBundle mainBundle] bundlePath];
NSLog(@"bundleRootDir %@ ",bundleRootDir );
NSString *tmpDir = [bundleRootDir stringByAppendingPathComponent:@"temp"];
NSLog(@"tmpDir %@ ",tmpDir);
NSFileManager *fileManager1=[[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum = [fileManager1 enumeratorAtPath:tmpDir];
// NSFileManager *fileManager1 = [NSFileManager defaultManager];
//NSArray *filePathsArray1 = [fileManager1 subpathsOfDirectoryAtPath:tmpDir error:nil];
NSMutableData *allFilesData1 = [NSMutableData new];
uLong crc1 = crc32(0L, Z_NULL, 0);
NSInteger filecount1=0;
//for (NSString *file1 in filePathsArray1) {
NSString *file1;
while ((file1 = [dirEnum nextObject])) {
NSString *fullPathToFile1 = [tmpDir stringByAppendingPathComponent:file1];
BOOL isDirectory1;
if ([fileManager1 fileExistsAtPath:fullPathToFile1 isDirectory:&isDirectory1] && isDirectory1 ) {
// ignore directories...
continue;
}
else {
NSData *myData1 = [NSData dataWithContentsOfFile:fullPathToFile1];
[allFilesData1 appendData:myData1];
NSLog(@"Checksum files included %@ , %d",fullPathToFile1,filecount1);
}
filecount1++;
}
NSLog(@"Checksum cal : length of data %lu",[allFilesData1 length]);
NSString *strData = [[NSString alloc]initWithData:allFilesData1 encoding:NSUTF8StringEncoding];
NSLog(@"All Data for checksum %@",strData);
crc1 = crc32(crc, [allFilesData1 bytes], [allFilesData1 length]);
NSLog(@"WL_INIT_PACKAGE - testWebResourcesChecksum crc32 output %lu",crc1);
NSString *checksum1 = [NSString stringWithFormat:@"%lu", crc1];
NSLog(@"WL_INIT_PACKAGE - testWebResourcesChecksum crc32 output %@",checksum1);