Чем использование FileAttributeKey.posixPermissions отличается от использования stat -f% A? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь получить права доступа 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/file или stat -x /path/to/file, может кто-нибудь, пожалуйста, помогите мневыяснить?

1 Ответ

0 голосов
/ 28 февраля 2019

Вам нужно отобразить результат в восьмеричном виде:

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)
    }
}
...