Получить атрибуты каждого элемента в каталоге документов iOS Swift

Я пытался получить атрибуты, такие как тип файла, дата создания, размер файла всех элементов в каталоге документов.

Вот код, который я использовал, но он возвращает мне просто "NSFileTypeDirectory"

 let filemgr = FileManager.default


     do
     {
        let attribs: NSDictionary? = try filemgr.attributesOfItem(
            atPath: documentDirectoryPath!) as NSDictionary
        if let fileattribs = attribs
     {
            let type = fileattribs["NSFileType"] as! String
            print("File type \(type)")
     }
     }
     catch
     {
            print(error)
     }

Я думаю, что он возвращает атрибуты папки документа.

1 ответ

Попробуй это

let fileManager = FileManager.default
let documentdirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first
let filePath = documentdirectory?.appendingPathComponent("your file name").path

do {
  let fileAttribute = try fileManager.attributesOfItem(atPath: filePath!)
  let fileSize = fileAttribute[FileAttributeKey.size] as! Int64
  let fileType = fileAttribute[FileAttributeKey.type] as! String
  let filecreationDate = fileAttribute[FileAttributeKey.creationDate] as! Date

} catch let error {
  print(error.localizedDescription)

На основе кода @KarthikeyanBose: Чтобы получить информацию обо всех файлах в каталоге Documents, сделайте следующее:

let fileManager = FileManager.default

if let documentsURLs = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
    do {
        let fileNames = try fileManager.contentsOfDirectory(atPath: documentsURLs.path)

        for fileName in fileNames {
            let fileURL = documentsURLs.appendingPathComponent(fileName)

            let fileAttribute = try fileManager.attributesOfItem(atPath: fileURL.path)
            let fileSize = fileAttribute[FileAttributeKey.size] as! Int64
            let fileType = fileAttribute[FileAttributeKey.type] as! String
            let filecreationDate = fileAttribute[FileAttributeKey.creationDate] as! Date
            let fileExtension = fileURL.pathExtension;

            print("Name: \(fileName), Size: \(fileSize), Type: \(fileType), Date: \(filecreationDate), Extension: \(fileExtension)")
        }
    } catch {
        print("Error: \(error)")
    }
} //Handle this "else" error too, even though this really shouldn't happen

Этот код печатает, например:

Name: Deadpool.png, Size: 39225, Type: NSFileTypeRegular, Date: 2019-05-27 11:03:03 +0000, Extension: png
Другие вопросы по тегам