Чтение файлов Alias
Я хочу читать псевдоним в Mac OS X программно. Когда я пытался это всегда читать оригинальный файл. Есть идеи, как это можно сделать?
спасибо за все ваши предложения.
6 ответов
Проверьте BDAlias. Это хорошая оболочка из какао вокруг Alias.
Если вы работаете на 10.6, то он также предоставляет новые методы в NSURL для чтения псевдонимов: проверьте NSURL bookmarkDataWithContentsOfURL: чтобы разрешить их, вы можете использовать: NSURL URLByResolvingBookmarkData: параметры:lativeToURL: bookmarkDataIsStale: error:
Для версии до 10.6 Apple также имеет хороший пример кода "Разрешение псевдонимов" в документах Какао для разрешения псевдонимов из 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 когда-либо был задокументирован.
Способ справиться с псевдонимами - через менеджер псевдонимов. (Хотя это со вкусом углерода, FSRef
интерфейсы по-прежнему доступны в 64-битной версии.)
Примечание: я ищу операцию, например, копирование.
Тогда вас могут заинтересовать функции копирования Core Services File Manager или эквивалентная операция NSWorkspace.
Я не уверен, имеете ли вы в виду символические ссылки (стандартный unix) или изобретение псевдонима Apple, но похоже, что это должно сработать.
Если вы хотите прочитать сами данные псевдонима, вам просто нужно использовать 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
Я не знаю, отвечает ли это на ваш вопрос. Вы действительно хотите открыть сам файл псевдонима?