xcode 在目标c中编辑/更新文件后,NSFileSystemFileNumber发生更改

dced5bon  于 2023-06-24  发布在  其他
关注(0)|答案(3)|浏览(126)

我正在开发文件管理系统,就像 * 可可 * 中的*Dropbox*一样。
我的问题是当我
编辑
任何文本文件时NSFileSystemFileNumber被更改。
即使已编辑的文件已从特定文件夹中移动,我也需要唯一的NSFileSystemFileNumber
简而言之,我只想知道如何从数据库中获取移动文件的旧路径或原始路径。
还有别的办法解决这个问题吗?
感谢Adv..!!

af7jpaap

af7jpaap1#

这取决于编辑器保存功能的实现方式。每个编辑器都有不同的功能,听起来你正在使用的编辑器会执行以下操作:
1.删除现有文件。
1.创建新文件。
1.写入文件数据。
因此,您每次都会得到一个新的inode。其他人可以:
1.截断现有文件。
1.写入文件数据。
这将导致每次相同的索引节点。
你对此无能为力,所以你需要使用名称或其他东西来跟踪文件更改,而不是inode。

vlju58qv

vlju58qv2#

您可以在数据库中使用的另一个选项。
使用NSURL API您可以提取文件的许多属性。其中一些正好符合你的身份识别需求。
查阅NSURL documentation for the NSURLResourceKey常量集。
这是一个代码片段。

NSURL *fileURL = [NSURL fileURLWithPath:filePath];
NSArray *identifyingAttributes = @[NSURLFileResourceIdentifierKey, NSURLDocumentIdentifierKey, NSURLGenerationIdentifierKey];
NSDictionary<NSURLResourceKey, id> *fileAttributes = [fileURL resourceValuesForKeys:identifyingAttributes error:&error];
NSNumber *uniqueFileIdentifier = fileAttributes[NSURLDocumentIdentifierKey];

我认为NSURLDocumentIdentifierKey属性是您要找的属性,但数组中的其他属性可能更适合您-在文档中阅读它们非常特殊的行为。

nlejzf6q

nlejzf6q3#

只是一个想法-一些我自己没有尝试过的东西。
为什么不使用MacOS的旧“别名”机制?为要跟踪的文件/document/bundle/目录创建一个别名(即使它被移动或重命名,或其内容被编辑),并将别名保存在数据库中。然后-你实际上卸载的问题(跟踪文件更改)到MacOS...
据我所知(那是20年前的事了……)别名是对象--不一定是文件--所以你可以在任何地方保存别名。这不像创建一个指向您想要跟踪的文件的符号链接-这会创建另一个文件系统对象。
我需要类似的东西,所以我会尝试这种方法很快-如果它为我工作,我会在这里更新。

相关问题