Swift 拷貝文件夾,實現文件夾內容總體複製

咱們知道,在沙盒內,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?#>)

一個是無實體路徑,一個有實體路徑。

 

而後依然調用上文到拷貝方法便可。

相關文章
相關標籤/搜索