代码之家  ›  专栏  ›  技术社区  ›  Girish Kolari

读取别名文件

  •  2
  • Girish Kolari  · 技术社区  · 15 年前

    知道怎么做吗?

    谢谢你的建议。

    6 回复  |  直到 15 年前
        1
  •  4
  •   Ken Aspeslagh    15 年前

    查看BDAlias。这是一个很好的可可包装的别名。

    http://github.com/rentzsch/bdalias

        2
  •  3
  •   mfazekas    15 年前

    NSURL bookmarkDataWithContentsOfURL: NSURL URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:

    对于10.6之前的版本,苹果也有一个不错的示例代码 "Resolving aliases" NSString 路径:

    NSString *path = <#Get a suitable path#>;
    NSString *resolvedPath = nil;
    
    CFURLRef url = CFURLCreateWithFileSystemPath
                       (kCFAllocatorDefault, (CFStringRef)path, kCFURLPOSIXPathStyle, NO);
    if (url != NULL)
    {
        FSRef fsRef;
        if (CFURLGetFSRef(url, &fsRef))
        {
            Boolean targetIsFolder, wasAliased;
            OSErr err = FSResolveAliasFile (&fsRef, true, &targetIsFolder, &wasAliased);
            if ((err == noErr) && wasAliased)
            {
                CFURLRef resolvedUrl = CFURLCreateFromFSRef(kCFAllocatorDefault, &fsRef);
                if (resolvedUrl != NULL)
                {
                    resolvedPath = (NSString*)
                            CFURLCopyFileSystemPath(resolvedUrl, kCFURLPOSIXPathStyle);
                    CFRelease(resolvedUrl);
                }
            }
        }
        CFRelease(url);
    }
    
    if (resolvedPath == nil)
    {
        resolvedPath = [[NSString alloc] initWithString:path];
    }
    

    如果您想进入业务部门手动加载数据并对此进行解释,我认为Alias的格式从未被记录在案。

        3
  •  1
  •   Jens Ayton    15 年前

    Alias Manager FSRef -基于接口在64位中仍然可用。)

        4
  •  1
  •   Peter Hosey    15 年前

    注:我在找一个类似复制的手术。

    您可能对核心服务文件管理器的 copying functions ,则,或 NSWorkspace's equivalent operation .

        5
  •  0
  •   ergosys    15 年前

    我不确定你指的是符号链接(标准unix),还是苹果的别名发明,但是 this

        6
  •  0
  •   Ukko    15 年前

    如果要读取别名数据本身,只需使用posix api打开文件并从中读取即可。你可以在终端上看到这个 cat .

    Kone:test eric$ echo  Hi Mom! > foo.txt
    Kone:test eric$ ln -s foo.txt foo2.txt  #to contrast symbolic link and alias
    << Make alias in Finder >>
    Kone:test eric$ ls -l
    total 192
    -rw-r--r--  1 eric  staff      8 Apr 23 11:44 foo.txt
    -rw-r--r--@ 1 eric  staff  43252 Apr 23 11:45 foo.txt alias
    lrwxr-xr-x  1 eric  staff      7 Apr 23 11:44 foo2.txt -> foo.txt
    Kone:test eric$ cat foo.txt
    Hi Mom!
    Kone:test eric$ cat foo2.txt
    Hi Mom!
    Kone:test eric$ cat foo.txt\ alias 
    bookmark88?????AܧUserserictestfoo.txt...yadda yadda yadda for 40 some k
    

    推荐文章