我正在嘗試撰寫一段代碼,而不是檢查許多不同型別影像檔案的檔案擴展名,而是查看檔案屬性。我從搜索檔案中無法弄清楚的是,它KIND:Image是否真的是一個檔案屬性,或者只是一個蘋果在 FinderApp 中創建的結構,以使用戶更輕松。
我撰寫了一個片段,它提取擴展名為 jpeg 的檔案的屬性,并且對于每個檔案,fileType 都回傳為NSFileTypeRegular.
let attr = try filemanager.attributesOfItem(atPath: pathConfig "/" file) as NSDictionary
if file.hasSuffix(ext) {
print ("Adding \(file) [ \(attr.fileSize()) \(attr.fileType())]")
print ( attr.fileModificationDate() )
}
有誰知道 MacOS 是否保留檔案所屬類別的屬性。例如IMAGE,DOCUMENT等等。
uj5u.com熱心網友回復:
要在 Finder 中實作類似于 Kind 搜索標簽的功能,您可以使用UTType(鏈接到參考)。
您可以UTType通過使用檔案擴展名初始化檔案來獲取檔案:
let fileType = UTType(filenameExtension: fileURL.pathExtension)
很酷的一點UTTypes是它們可以有層次結構, .UTType.jpeg的子型別也是如此UTType.image。
如果你想檢查一個檔案是否是任何型別的影像,你可以這樣做
let isImage = fileType.conforms(to: .image)
您可以檢查串列中要支持的“種類”型別,并使用這些型別進行過濾UTTypes
uj5u.com熱心網友回復:
這是我基于@EmilioPelaez 提供的資訊的最終解決方案,我對 Swift 并不完全滿意,尤其是解包操作,所以如果代碼看起來很奇怪,這可能就是原因。
func imagesInDir(path: String?) -> [String] {
if let path {
let filemanager: FileManager = FileManager()
let files = filemanager.enumerator(atPath: path)
var array = [String]()
var urlFile: NSURL
while let file = files?.nextObject() as? String {
urlFile = NSURL(fileURLWithPath: file, isDirectory: false)
if (urlFile.isFileURL) {
if let pathExt = urlFile.pathExtension {
if let fileType = UTType(filenameExtension: pathExt) {
let isImage = fileType.conforms(to: .image)
if (isImage){
array.append(file)
print ("\(array.count) \(fileType)")
}
}
}
}
}
}
return array
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/527643.html
標籤:迅速苹果系统
