gpt4 book ai didi

cocoa - 文件被隐藏了吗?

转载 作者:行者123 更新时间:2023-12-03 16:12:16 26 4
gpt4 key购买 nike

如何判断某个路径是否指向隐藏文件/文件夹?

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” bool 值,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

}

现在似乎对所有事情都有效!

关于cocoa - 文件被隐藏了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1140235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com