gpt4 book ai didi

objective-c - 是否有任何函数可以检索与 NSFileSystemFileNumber 关联的路径?

转载 作者:行者123 更新时间:2023-12-03 17:49:55 24 4
gpt4 key购买 nike

我正在编写一个实用程序,它会遍历 Cocoa 上的目录树,并尝试检测自该目录上次与备份位置同步以来发生的更改。

当我最初同步文件和文件夹时,我获取 NSFileSystemFileNumber 并将其存储在该文件或文件夹的数据库记录中:

 NSString *oldFilePath = /* ... */;
NSError *error = nil;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:oldFilePath error:&error];
/* set database record for oldFilePath to [attributes fileSystemFileNumber] */

当我遇到新文件或文件夹时,我首先使用 NSFileSystemFileNumber 进行数据库查找以查找原始文件(如果有)。

但是,如果文件已编辑并从父目录移动到子目录,并且我试图检测对父目录的更改,我希望能够使用保存的 NSFileSystemFileNumber 来识别新的路径,以便我可以区分移动、删除和更新。

有其他解决方案可以解决这个问题吗?

感谢任何帮助..!!

最佳答案

没有直接的方法可以做到这一点。 NSFileSystemFileNumber 只是文件的inode。多个目录中的同一个 inode 可以有多个目录条目 - 即一个文件可以出现在多个位置,并且在这些位置具有不同的名称。因此从 inode 到路径的映射不是一对一的,它可能会产生路径的集合。

解决问题的典型解决方案是使用命令 find(1) 或库函数(例如 fts 系列)来遍历文件系统并产生一个映射。然而,对于您的情况,听起来您的数据库应该可以通过 inode 号进行搜索,您已经将其存储在记录中,因此您不需要每次都遍历树来生成映射。

HTH

关于objective-c - 是否有任何函数可以检索与 NSFileSystemFileNumber 关联的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com