2

iTunesのような一部のMacOSXアプリケーションは、ファイルを移動しても実際には問題がありません。移動したファイルを簡単に見つけることができます(そして、以前にファイルを開いたことがないと確信しています)。

彼らはそれをどのようにやっていますか?私が考えることができる1つの可能性は、FSイベント通知システムです。(関連する質問

しかし、絶対的なファイルハンドル/ IDなどを見たことがあるので、そのファイルハンドルで現在のファイル名をいつでも照会できるのではないかと思いました。そのようなものはありますか?iノードnrかもしれませんが、iノードnrからファイル名を取得する方法とファイルを開く方法がわからないため、少し少なすぎます。

4

3 に答える 3

0

あなたが探しているのはNSURLのブックマークだと思います—私はiPadを使用していますが、Appleの近視眼的なWebページのデザインのために適切なリンクを生成できませんが、その本質はURLからブックマークを取得して後で解決できることですURLに戻るブックマーク。システムは、暫定的にファイル内のあらゆる動きを回避します。

于 2013-02-09T15:44:16.533 に答える
0

私が探しているもののように聞こえるAliasManagerについて知りました。残念ながら、これは非推奨のようです。(関連する質問非推奨に関するいくつかの情報。

別の関連する質問)そのような関数を提供するNSURLクラスもあります。

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())
于 2013-02-09T15:36:55.433 に答える
0

アルバートがエイリアスマネージャーが減価償却されたと述べたように、置き換えはURLブックマークメソッドです

于 2013-02-09T15:47:11.557 に答える