Какао target-c для os x: получить точку монтирования тома из пути - PullRequest
5 голосов
/ 09 января 2010

Я хотел бы найти точку монтирования тома для заданного пути NSString.

Хотя я новичок в Какао и объективе-C, я пытаюсь сделать это «элегантно», т.е. используя один из предоставленных классов, вместо того, чтобы делать внешний вызов оболочки или выводить список смонтированных файловых систем и находить, к какому из них относится путь.

Я нашел NSWorkspace и getFileSystemInfoForPath, но там не упоминается точка монтирования.

Кто-нибудь может помочь?

спасибо

Ответы [ 2 ]

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

Это должно что-то вроде этого:

+ (NSString*)volumeNameForPath:(NSString *)inPath
{
    HFSUniStr255 volumeName;
    FSRef volumeFSRef;
    unsigned int volumeIndex = 1;

    while (FSGetVolumeInfo(kFSInvalidVolumeRefNum, volumeIndex++, NULL, kFSVolInfoNone, NULL, &volumeName, &volumeFSRef) == noErr) {
        NSURL *url = [(NSURL *)CFURLCreateFromFSRef(NULL, &volumeFSRef) autorelease];
        NSString *path = [url path];

        if ([inPath hasPrefix:path]) {
            return [NSString stringWithCharacters:volumeName.unicode length:volumeName.length]
        }
    }

    return nil;
}
1 голос
/ 13 февраля 2010

Я выполнил это через месяц после того, как его спросили, но в любом случае: в стандартной библиотеке Python есть функция os.path.ismount(), которая определяет, является ли путь точкой монтирования. Из его описания он делает это так:

Функция проверяет, находится ли родительский элемент path, path/.., на устройстве, отличном от path, или path/.. и path указывают на один и тот же i-узел на том же устройстве - должен определять точки монтирования для всех вариантов Unix и POSIX.

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