Получить атрибуты каждого элемента в каталоге документов 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