Cocoa Swift, получить / установить скрытый флаг для файлов и каталогов
Я хочу проверить, имеет ли файл или каталог в файловой системе определенный флаг, в этом случае флаг «скрытый», а затем установить или удалить его. Я знаю, что это возможно через командную строку, но мне было интересно, смогу ли я сделать это с Cocoa / Swift?
Я пытался с помощьюNSFileManager
attributesOfItemAtPath
, но возвращаемый объект не содержит флагов.
пример:
let fm = NSFileManager.defaultManager()
do {
let testLibrary = try fm.attributesOfItemAtPath(dataPath)
print (testLibrary)
} catch let error as NSError {
print("JSON Error: \(error.localizedDescription)")
}
возвращает:
["NSFileCreationDate": 2013-08-16 21:37:57 +0000,
"NSFileGroupOwnerAccountName": staff,
"NSFileType": NSFileTypeDirectory,
"NSFileSystemNumber": 16777220,
"NSFileOwnerAccountName": xjx,
"NSFileReferenceCount": 61,
"NSFileModificationDate": 2015-10-22 07:25:12 +0000,
"NSFileExtensionHidden": 0,
"NSFileSize": 2074,
"NSFileGroupOwnerAccountID": 20,
"NSFileOwnerAccountID": 501,
"NSFilePosixPermissions": 448,
"NSFileSystemFileNumber": 603923]
Для сравнения, когда я делаюls -lO
в моем домашнем каталоге я вижу следующее (обратите внимание на скрытый флаг на «Библиотеке»):
drwx------+ 49 xjx staff - 1666 Jan 11 19:43 Downloads
drwx------@ 28 xjx staff - 952 Jan 11 08:40 Dropbox
drwx------@ 61 xjx staff hidden 2074 Oct 22 09:25 Library
drwx------+ 7 xjx staff - 238 Apr 30 2015 Movies
drwx------+ 5 xjx staff - 170 Jun 14 2015 Music