咱們知道,在沙盒內,iOS要拷貝一個文件,可使用css
fileManager.copyItem(atPath: fullPath, toPath: fulltoPath)
方法簡單實現,不過當咱們要拷貝的是一個總體文件夾(內部包含自文件夾等等)的話,該如何實現?html
我本身測試了下,發現依然能夠很便捷到實現測試
好比:我要實現下圖的文件夾拷貝,將cssjs文件夾總體拷貝到cssjs_temp內。spa
=====》
code
實現:htm
/// 拷貝文件夾 /// /// - Parameters: /// - fpath: 原始路徑,絕對路徑 /// - tpath: 目標路徑,絕對路徑,注意:這裏tpath路徑必須包含目標文件夾名稱,不然拷貝不了 func copyFile(fpath:String,tpath:String) { do{ //若是已存在,先刪除,不然拷貝不了 let fileManager = FileManager.default if fileManager.fileExists(atPath: tpath){ try fileManager.removeItem(atPath: tpath) } try fileManager.copyItem(atPath: fpath, toPath: tpath) }catch{} }
這裏有幾個小注意點:blog
一、目標路徑,要帶上文件夾名稱,而不能只寫父路徑,好比上文到目標路徑必須這樣:xxx/html/cssjs_temp/cssjs ,帶上最後的cssjsrem
二、若是要重命名,只須要將 xxx/html/cssjs_temp/cssjs_newName的最後文件夾名稱修改便可(cssjs_newName就是你要的新名稱)。class
三、若是是覆蓋拷貝,就是說目標路徑已存在此文件夾,咱們必須先刪除,不然提示make directory error(固然這裏最好作一個容錯處理,好比拷貝前先轉移到其餘路徑,若是失敗,再拿回來)原理
結束~
最後引伸一下,最初個人需求 ,是將項目的文件,拷貝到沙盒內。
其原理是同樣到,只不過項目內文件到路徑與沙盒有點區別而已。
獲取項目內文件路徑:
Bundle.main.path(forResource: <#T##String?#>, ofType: <#T##String?#>)
Bundle.main.path(forResource: <#T##String?#>, ofType: <#T##String?#>, inDirectory: <#T##String?#>)
一個是無實體路徑,一個有實體路徑。
而後依然調用上文到拷貝方法便可。