如何确定某个路径是否指向隐藏文件/文件夹?
NSString *file = @"/my/file/some.where";
BOOL fileIsHidden = // <-- what do I do here?
我知道隐藏文件以句点为前缀。这不是隐藏文件的唯一标准。我在某处读到有一个 .hidden 文件还可以配置隐藏的文件。
是否有一种 Cocoa/Carbon 方法可以轻松找到这个问题,而无需重写所有这些逻辑并从各种来源收集信息?
编辑:kLSItemInfoIsInvisible 检查似乎适用于某些文件。看来并没有隐藏:
/dev
/etc
/tmp
/var
默认情况下,所有这些都被 Finder 隐藏。
正如海报所指出的,它似乎不适用于 /etc 和 /var 之类的,所以我修改了方法。
现在它需要一个“isFile”布尔值,YES 表示它是一个文件,NO 表示一个目录
BOOL isInvisible(NSString *str, BOOL isFile){
CFURLRef inURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)str, kCFURLPOSIXPathStyle, isFile);
LSItemInfoRecord itemInfo;
LSCopyItemInfoForURL(inURL, kLSRequestAllFlags, &itemInfo);
BOOL isInvisible = itemInfo.flags & kLSItemInfoIsInvisible;
return (isInvisible != 0);
}
int main(){
NSLog(@"%d",isInvisible(@"/etc",NO)); // => 1
NSLog(@"%d",isInvisible(@"/Users",NO)); // => 0
NSLog(@"%d",isInvisible(@"/mach_kernel",YES)); // => 1
}
现在似乎对所有事情都有效!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)