使用某种持久性 ID 监视文件
Monitor file with some kind of persistent id
我的应用程序将文件写入用户共享的文档目录。我保存了文件路径,但如果用户更改文档名称、将文档移动到新位置等,这就会中断。是否有某种持久文件 ID 可以用来跟踪这些文档?
我一直在四处寻找
FileManager.default.attributesOfItem(atPath: docUrl.path)
并且我找到了 FileAttributeKey.systemFileNumber 之类的属性,但是每次我 运行 应用程序时,这个数字似乎都会改变。必须有一些方法来跟踪文件而不是它们的路径
您需要使用url个书签,如下图(沙哑)
if let bookmark = try? URL(fileURLWithPath: docUrl.path)
.bookmarkData(includingResourceValuesForKeys: nil,
relativeTo:nil) {
// store somewhere persistent bookmark to your file
}
...
let bookmark = // read bookmark from persisten storage
var stale = false
if let url = try? URL(resolvingBookmarkData:bookmark, bookmarkDataIsStale: &stale) {
// work with resolved url
} else {
// file disappeared - handle the situation
}
我的应用程序将文件写入用户共享的文档目录。我保存了文件路径,但如果用户更改文档名称、将文档移动到新位置等,这就会中断。是否有某种持久文件 ID 可以用来跟踪这些文档? 我一直在四处寻找
FileManager.default.attributesOfItem(atPath: docUrl.path)
并且我找到了 FileAttributeKey.systemFileNumber 之类的属性,但是每次我 运行 应用程序时,这个数字似乎都会改变。必须有一些方法来跟踪文件而不是它们的路径
您需要使用url个书签,如下图(沙哑)
if let bookmark = try? URL(fileURLWithPath: docUrl.path)
.bookmarkData(includingResourceValuesForKeys: nil,
relativeTo:nil) {
// store somewhere persistent bookmark to your file
}
...
let bookmark = // read bookmark from persisten storage
var stale = false
if let url = try? URL(resolvingBookmarkData:bookmark, bookmarkDataIsStale: &stale) {
// work with resolved url
} else {
// file disappeared - handle the situation
}