我正在编写一个实用程序,它可以遍历 Mac OS X(10.6 及更高版本)上的目录树,并尝试检测自目录上次与备份位置同步以来发生的更改。
当我最初同步文件和文件夹时,我获取 inode 号并将其存储在该文件或文件夹的数据库记录中:
NSString *oldFilePath = /* ... */;
NSError *error = nil;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:oldFilePath error:&error];
/* set database record for oldFilePath to [attributes fileSystemFileNumber] */
当我遇到新文件或文件夹时,我首先使用 inode 号进行数据库查找,以查找原始文件(如果有)。
但在文件已从父目录移动到子目录的情况下,并且我试图检测对父目录的更改,我希望能够使用保存的 inode 号来识别新路径这样我就可以区分移动和删除。
最佳答案
在 Mac 上,GetFileInfo 命令执行 inode 编号的反向查找。
GetFileInfo /.vol/234881029/344711
应该产生:
file: "/path/to/file"
...
Martin R 的答案仅适用于目录。
关于objective-c - 是否有任何函数可以检索与 inode 关联的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24933056/