检查文件或目录是不是隐藏

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)
            
        
    

【讨论】:

以上是关于检查文件或目录是不是隐藏的主要内容,如果未能解决你的问题,请参考以下文章

如何检查隐藏文件是不是存在?

如何检查元素是不是隐藏在 jQuery 中?

如何检查元素是不是隐藏在 jQuery 中?

如何检查元素是不是隐藏在 jQuery 中?

如何检查一个元素是不是隐藏在 jQuery 中?

如何检查一个元素是不是隐藏在 jQuery 中?