Macos OSX:查找移动的文件
有些MacOSX应用程序(如iTunes)在我移动文件时不会出现问题——它们仍然可以很容易地找到移动的文件(我很确定它们以前没有打开过文件) 他们是怎么做到的?我可以想到的一种可能性是FS事件通知系统。()Macos OSX:查找移动的文件,macos,filesystems,Macos,Filesystems,有些MacOSX应用程序(如iTunes)在我移动文件时不会出现问题——它们仍然可以很容易地找到移动的文件(我很确定它们以前没有打开过文件) 他们是怎么做到的?我可以想到的一种可能性是FS事件通知系统。() 但我记得我看到过一些绝对文件句柄/id,我想也许他们总是可以通过该文件句柄查询当前文件名。有这样的事吗?可能是inode nr,但这有点太少了,因为我不确定如何从inode nr获取文件名以及如何打开文件。我刚刚发现了与我正在搜索的内容类似的。不幸的是,这似乎不受欢迎。() ()还有提供这种
但我记得我看到过一些绝对文件句柄/id,我想也许他们总是可以通过该文件句柄查询当前文件名。有这样的事吗?可能是inode nr,但这有点太少了,因为我不确定如何从inode nr获取文件名以及如何打开文件。我刚刚发现了与我正在搜索的内容类似的。不幸的是,这似乎不受欢迎。() ()还有提供这种功能的 Python代码:
import AppKit
def getFileNativeId(filepath):
if not os.path.isfile(filepath): return None
filepath = os.path.abspath(filepath)
filepath = unicode(filepath)
url = AppKit.NSURL.alloc().initFileURLWithPath_(filepath)
bookmark = url.bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_(AppKit.NSURLBookmarkCreationPreferFileIDResolution,None,None,None)
bytes = bookmark[0].bytes().tobytes()
return bytes
def getPathByNativeId(fileid):
nsdata = AppKit.NSData.alloc().initWithBytes_length_(fileid, len(fileid))
url, _, _ = AppKit.NSURL.URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_(nsdata, AppKit.NSURLBookmarkResolutionWithoutUI, None,None,None)
if not url: return None
return unicode(url.path())
我想你要找的是苹果的书签——我在iPad上,由于苹果公司短视的网页设计,无法生成正确的链接,但其本质是,你可以从URL获取书签,然后将书签解析回URL。在此期间,系统会处理文件中的任何移动。正如Albert提到的Alias Manager已被折旧,替换的是方法