如何使用FileAttributeKey.posixPermissions与使用stat -f%A不同?

问题描述 投票:1回答:1

我正在尝试获取文件的posix权限,但是当我使用密钥FileAttributeKey.posixPermissions(最初是NSFilePosixPermissions)来检索数值posix权限值时,它返回511 (-r-x--x--x),但是当我在终端中使用stat -f %A /path/to/file时,它返回777 (-rwxrwxrwx)这是正确的一个(我使用chmod 777 /path/to/file,所以它应该是777 (-rwxrwxrwx))。

这是我使用FileAttributeKey.posixPermissions(Swift 4)的代码:

var numericalValue = "000"
if let attributes = try? FileManager.default.attributesOfItem(atPath: "/path/to/file") {
    if let posixPermissions = attributes[.posixPermissions] as? NSNumber {
        numericalValue = posixPermissions.stringValue
    }
}

我不知道发生了什么,我想知道从FileAttributeKey.posixPermissions返回的值与stat -f %A /path/to/filestat -x /path/to/file的输出有什么不同,有谁可以帮我弄明白?

cocoa swift4 nsfilemanager stat
1个回答
1
投票

您需要以八进制显示结果:

if let attributes = try? FileManager.default.attributesOfItem(atPath: "/path/to/file") {
    if let posixPermissions = attributes[.posixPermissions] as? NSNumber {
        let octal = String(posixPermissions.intValue, radix: 8, uppercase: false)
        print(octal)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.