我想在Mac OS X中以编程方式读取别名。当我尝试它时,总是读取原始文件。你知道怎么做吗?
感谢您的所有建议。
发布于 2010-04-09 21:58:04
查看BDAlias。这是一个围绕Alias的很好的Cocoa包装器。
http://github.com/rentzsch/bdalias
发布于 2010-04-24 13:50:09
如果你使用的是10.6,那么它还在NSURL中提供了新的方法来读取别名:检查NSURL bookmarkDataWithContentsOfURL:来解析它们,你可以使用:NSURL URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
对于10.6之前的版本,苹果在Cocoa文档中也有一个很好的样本码"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的格式曾经被记录下来。
发布于 2010-04-09 18:44:47
处理别名的方法是通过Alias Manager。(尽管FSRef-based接口很有特色,但它仍然是64位的。)
https://stackoverflow.com/questions/2606255
复制相似问题