首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取Alias文件

读取Alias文件
EN

Stack Overflow用户
提问于 2010-04-09 17:25:06
回答 6查看 2.8K关注 0票数 2

我想在Mac OS X中以编程方式读取别名。当我尝试它时,总是读取原始文件。你知道怎么做吗?

感谢您的所有建议。

EN

回答 6

Stack Overflow用户

发布于 2010-04-09 21:58:04

查看BDAlias。这是一个围绕Alias的很好的Cocoa包装器。

http://github.com/rentzsch/bdalias

票数 4
EN

Stack Overflow用户

发布于 2010-04-24 13:50:09

如果你使用的是10.6,那么它还在NSURL中提供了新的方法来读取别名:检查NSURL bookmarkDataWithContentsOfURL:来解析它们,你可以使用:NSURL URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:

对于10.6之前的版本,苹果在Cocoa文档中也有一个很好的样本码"Resolving aliases",用于从NSString路径解析别名:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2010-04-09 18:44:47

处理别名的方法是通过Alias Manager。(尽管FSRef-based接口很有特色,但它仍然是64位的。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2606255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档