Search code examples
iosswift3mainbundledocumentsdirectory

Swift 3 - Copy Folder w/ contents from Main Bundle to Documents Directory


I have folders with files inside them in my main bundle, and I want to copy/cut them to the Documents Directory at first launch of the application to access them from there. I've seen examples but they're all in Obj-C and I'm using Swift 3. How can I do this?


Solution

  • I managed to do it using 2 functions:

    func copyFolders() {
        let filemgr = FileManager.default
        filemgr.delegate = self
        let dirPaths = filemgr.urls(for: .documentDirectory, in: .userDomainMask)
        let docsURL = dirPaths[0]
    
        let folderPath = Bundle.main.resourceURL!.appendingPathComponent("Test").path
        let docsFolder = docsURL.appendingPathComponent("Test").path
        copyFiles(pathFromBundle: folderPath, pathDestDocs: docsFolder)
    }
    
    func copyFiles(pathFromBundle : String, pathDestDocs: String) {
        let fileManagerIs = FileManager.default
        fileManagerIs.delegate = self
    
        do {
            let filelist = try fileManagerIs.contentsOfDirectory(atPath: pathFromBundle)
            try? fileManagerIs.copyItem(atPath: pathFromBundle, toPath: pathDestDocs)
    
            for filename in filelist {
                try? fileManagerIs.copyItem(atPath: "\(pathFromBundle)/\(filename)", toPath: "\(pathDestDocs)/\(filename)")
            }
        } catch {
            print("\nError\n")
        }
    }