Чтение файлов Alias - PullRequest
       31

Чтение файлов Alias

2 голосов
/ 09 апреля 2010

Я хочу читать псевдоним в Mac OS X программно. Когда я пытался это всегда читать оригинальный файл. Есть идеи, как это можно сделать?

спасибо за ваши предложения.

Ответы [ 6 ]

4 голосов
/ 09 апреля 2010

Проверьте BDAlias. Это хорошая оболочка из какао вокруг Alias.

http://github.com/rentzsch/bdalias

3 голосов
/ 24 апреля 2010

Если вы используете 10.6, он также предоставляет новые методы в NSURL для чтения псевдонимов: установите флажок NSURL bookmarkDataWithContentsOfURL: , чтобы их разрешить, вы можете использовать: NSURL URLByResolvingBookmarkData: options :lativeToURL: bookmarkDataIsStale: ошибка:

Для версий до 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 ​​когда-либо был задокументирован.

1 голос
/ 10 апреля 2010

Примечание. Мне нужна операция, например, копирование.

Возможно, вас заинтересуют функции копирования файлового менеджера Core Services , затем или эквивалентная операция NSWorkspace .

1 голос
/ 09 апреля 2010

Способ работы с псевдонимами - через Alias ​​Manager . (Несмотря на то, что он имеет углеродный вкус, интерфейсы на основе FSRef все еще доступны в 64-битной версии.)

0 голосов
/ 23 апреля 2010

Если вы хотите прочитать данные псевдонима, вам просто нужно использовать 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

Я не знаю, отвечает ли это на ваш вопрос. Вы действительно хотите открыть сам файл псевдонима?

0 голосов
/ 19 апреля 2010

Я не уверен, имеете ли вы в виду символические ссылки (стандартный unix) или изобретение псевдонима Apple, но это выглядит так, как будто оно должно справиться либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...