检查文件或目录是不是隐藏
Posted
技术标签:
【中文标题】检查文件或目录是不是隐藏【英文标题】:Check if a file or directory is hidden检查文件或目录是否隐藏 【发布时间】:2022-01-04 19:36:36 【问题描述】:在 Mac 上,第一种情况,如果文件或目录的名称以“.”开头,则它是隐藏的。
另一种情况,例如:
/Users/USER_NAME/Library
/bin
它们的名字不以“.”开头,但它们是隐藏的。
我得到了“/Users/USER_NAME/Library”的所有属性:
目标-c
NSError * error;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:&error];
输出:
NSFileCreationDate = "2019-06-04 23:44:56 +0000";
NSFileExtensionHidden = 0;
NSFileGroupOwnerAccountID = 20;
NSFileGroupOwnerAccountName = staff;
NSFileModificationDate = "2021-10-31 18:47:57 +0000";
NSFileOwnerAccountID = 501;
NSFileOwnerAccountName = xxxxxxxx;
NSFilePosixPermissions = 448;
NSFileProtectionKey = NSFileProtectionCompleteUntilFirstUserAuthentication;
NSFileReferenceCount = 79;
NSFileSize = 2528;
NSFileSystemFileNumber = 360719;
NSFileSystemNumber = 16777221;
NSFileType = NSFileTypeDirectory;
我没有找到是否隐藏相关属性。
【问题讨论】:
相关:***.com/questions/17902169/objective-c-hidden-files @Cristik 答案仅检查名称是否以“.”开头。 @CaoYongFeng 如果文件名以句点开头,则属性 isHidden 将不起作用 @LeoDabus "/bin" 不是以"."开头的,它是隐藏的。 @CaoYongFeng 看看我下面的帖子。顺便说一句,您应该使用 URL 而不是路径。 【参考方案1】:如果 fileURL 是否隐藏,您可以检查 fileURL 资源键 isHiddenKey。请注意,如果文件名以句点开头,则更改 isHidden
值不会产生任何影响:
来自文档
如果资源因为名称以句点开头而被隐藏,则设置此值无效。
extension URL
var isHidden: Bool
get (try? resourceValues(forKeys: [.isHiddenKey]))?.isHidden == true
set
var resourceValues = URLResourceValues()
resourceValues.isHidden = newValue
do
try setResourceValues(resourceValues)
catch
print("isHidden error:", error)
【讨论】:
以上是关于检查文件或目录是不是隐藏的主要内容,如果未能解决你的问题,请参考以下文章