2017-03-03 20 views
2

如何從目錄中的每個文件獲取日期?目錄文件夾中的文件日期

let directoryContent = try fileManager.contentsOfDirectory(atPath: directoryURL.path) 

這就是我如何從目錄中獲取文件。我發現了幾個方法:

directoryContent.Contains(...)

的文件,其中的數據是舊的,然後幾天 - 我怎麼能檢查呢?

然後;

let fileAttributes = try fileManager.attributesOfItem(atPath: directoryURL.path) 

它會給我目錄中的最後一個文件。

而這要以字節爲單位回覆日期:

for var i in 0..<directoryContent.count { 
       let date = directoryContent.index(after: i).description.data(using: String.Encoding.utf8)! 
       print(date) 
      } 

哪一個是recive從所有文件的日期或檢查目錄conteins這是舊的,那麼X時間特定日期的最佳途徑。

在此先感謝!

回答

4

強烈建議使用URL相關API FileManager以非常有效的方式獲取文件屬性。

此代碼打印指定目錄的所有URL,創建日期早於一週前。

let calendar = Calendar.current 
let aWeekAgo = calendar.date(byAdding: .day, value: -7, to: Date())! 

do { 
    let directoryContent = try fileManager.contentsOfDirectory(at: directoryURL, includingPropertiesForKeys: [.creationDateKey], options: [.skipsSubdirectoryDescendants, .skipsHiddenFiles]) 
    for url in directoryContent { 
     let resources = try url.resourceValues(forKeys: [.creationDateKey]) 
     let creationDate = resources.creationDate! 
     if creationDate < aWeekAgo { 
      print(url) 
      // do somthing with the found files 
     } 
    } 
} 
catch { 
    print(error) 
} 

如果你想例如一個URL是無效的工作流程進行更精細的控制,你要打印的不良URL和相關的錯誤,但繼續旋進其他網址使用一個枚舉,語法頗爲相似:

do { 
    let enumerator = fileManager.enumerator(at: directoryURL, includingPropertiesForKeys: [.creationDateKey], options: [.skipsSubdirectoryDescendants, .skipsHiddenFiles], errorHandler: { (url, error) -> Bool in 
     print("An error \(error) occurred at \(url)") 
     return true 
    }) 
    while let url = enumerator?.nextObject() as? URL { 
     let resources = try url.resourceValues(forKeys: [.creationDateKey]) 
     let creationDate = resources.creationDate! 
     if creationDate < last7Days { 
      print(url) 
      // do somthing with the found files 
     } 
    } 

} 
catch { 
    print(error) 
} 
+0

這就是我一直在尋找的!謝謝 ! – yerpy