我想找到给定NSString路径的卷的挂载点。
虽然我是Cocoa和Objective-C的初学者,但我试图“优雅地”这样做,即。使用提供的类之一,而不是进行外部shell调用或列出已安装的文件系统,并找到路径所属的类。
我确实找到了NSWorkspace和getFileSystemInfoForPath,但它没有提到挂载点。
有人可以帮忙吗?
感谢
答案 0 :(得分:4)
这应该是这样的:
+ (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 :(得分:1)
我被问到这个问题已经过了一个月,但无论如何:在Python标准库中有os.path.ismount()
函数,它检测路径是否是挂载点。从描述中可以看出来:
该函数检查
path
的父级path/..
是否与path
不同,或者path/..
和path
是否指向在同一设备上使用相同的i-node - 这应该检测所有Unix和POSIX变体的挂载点。