2013-02-09 30 views
2

當我移動一個文件時,像iTunes這樣的一些MacOSX應用程序並沒有真正的問題 - 他們仍然很容易找到移動的文件(我確信他們以前沒有打開文件)。OSX:找到移動的文件

他們是怎麼做到的?我能想到的一種可能性是FS事件通知系統。 (related question

但我記得我已經看過一些絕對的文件句柄/ ID左右,我想也許他們總是可以通過該文件句柄查詢當前文件名。有沒有這樣的事情?也許是inode nr,但這有點太少了,因爲我不確定如何從inode nr獲取文件名以及如何打開文件。

回答

0

正如阿爾貝提到的別名管理器已貶值,替換是URL Bookmark方法

0

我剛剛發現了關於Alias Manager這聽起來像我正在尋找。不幸的是,這似乎不贊成。 (related questionSome info about the deprecation.

Another related question)還有NSURL class它提供這樣的功能。

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()) 
0

我想你要找的是什麼NSURL的書籤 - 我在iPad上,由於蘋果公司的短視的網頁設計,但實質做無法產生正確的鏈接它是你從一個URL獲得書籤,然後可以將書籤解析回一個URL。該系統適用於臨時文件中的任何移動。