我在单个卷上递归了一个文件夹,并检索了文件名、引用计数和 inode 编号的列表,使用
NSFileManager 属性OfItemAtPath
和 NSDictionary fileSystemFileNumber 和 objectForKey:NSFileReferenceCount
出于某种原因,我得到的结果是引用计数为 10,但列表中有超过 10 个具有相同 iNode 编号的文件。
值得注意的是,我的列表中没有包含 SymLink,我只在 [dict fileType] == NSFileTypeRegular 时记录文件
任何想法为什么会这样?
编辑:@Peter Hosey,我正在编写 iNode 和引用计数,如下所示:
CLMFileManagedObj *clmf;
clmf = (CLMFileManagedObj *)[NSEntityDescription insertNewObjectForEntityForName:@"CLMFile" inManagedObjectContext:moc];
NSUInteger fsfn = [dict fileSystemFileNumber];
[clmf setValue:[NSNumber numberWithUnsignedInteger:fsfn] forKey:@"iNodeNumber"];
[clmf setValue:(NSNumber*)[dict objectForKey:NSFileReferenceCount] forKey:@"referenceCount"];
请注意,iNodeNumber 和 referenceCount 的编写方式略有不同的原因是 [dict] 提供了直接 (NSUInteger)fileSystemFileNumber 获取方法,而 fileReferenceCount 需要使用键检索(根据我在 NSDictionary 上可以找到的任何帮助)
CLMFile 实体的两个属性都是 Int 64。据我所知,NSUInteger 的类型取决于运行 32 位还是 64 位模式,但是 [NSNumber numberWithUnsignedInteger] 接受 NSUInteger 作为参数,所以我假设它处理数字在任一模式下正确。
我在活动监视器中看不到它是否是 32/64 位的。我假设 XCode 3.1.3 项目的默认设置是什么。
我可能在这里遗漏了一些东西,因为我对 Mac/Obj-C/XCode/Cocoa 比较陌生,所以任何帮助/指针将不胜感激。经验丰富的程序员,但不在这种环境中(尽管我学习得尽可能快......)