我在一个卷上重现了一个文件夹,并检索了文件名、引用计数和inode编号的列表,使用
文件管理器属性FiteMatPath
和nsDictionary文件系统文件编号和对象分叉:nsFileReferenceCount
出于某种原因,我得到了一些结果,比如引用计数为10,但是列出了许多具有相同inode编号的超过10个文件。
注意,我的列表中没有包含符号链接,我只在[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]提供了直接(nsinteger)filesystemfilenumber get方法,而fileReferenceCount需要使用键来检索(根据我在nsDictionary上找到的任何帮助)。
clmfile实体的两个属性都是int 64。据我所知,nsinteger的类型取决于运行的是32位模式还是64位模式,但是[nsnumber numberwithunsignedinteger]接受nsinteger作为参数,因此我假设它在任何一种模式下都能正确处理数字。
我看不到活动监视器中的位置,它显示是否是32/64位。我假设Xcode3.1.3项目的默认值是什么。
我可能在这里遗漏了一些东西,因为我对mac/obj-c/xcode/cocoa比较陌生,所以任何帮助/指针都会受到感激。经验丰富的程序员,但不是在这种环境中(尽管我尽可能快地学习…)