【问题标题】: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;
}

我没有找到是否隐藏相关属性。

【问题讨论】:

  • @Cristik 答案仅检查名称是否以“.”开头。
  • @CaoYongFeng 如果文件名以句点开头,则属性 isHidden 将不起作用
  • @LeoDabus "/bin" 不是以"."开头的,它是隐藏的。
  • @CaoYongFeng 看看我下面的帖子。顺便说一句,您应该使用 URL 而不是路径。

标签: node.js swift objective-c macos


【解决方案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)
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2021-08-26
    • 2018-05-13
    • 1970-01-01
    • 2015-11-11
    • 2020-05-22
    • 2013-04-24
    • 2018-05-08
    • 2013-04-07
    相关资源
    最近更新 更多