首页 > 解决方案 > Swift:如何在应用程序首次运行时将文件从应用程序包复制到 Documents 文件夹

问题描述

当应用程序第一次运行时,关于如何以编程方式将 Obj-C 中的文件从应用程序包复制到应用程序的沙盒文档文件夹(例如,此处此处此处)有各种示例代码和问题。

你如何在 Swift 中做到这一点?

标签: iosswift

解决方案


您可以使用FileManager API:

这是一个复制具有指定扩展名的所有文件的函数的示例:

func copyFilesFromBundleToDocumentsFolderWith(fileExtension: String) {
    if let resPath = Bundle.main.resourcePath {
        do {
            let dirContents = try FileManager.default.contentsOfDirectory(atPath: resPath)
            let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
            let filteredFiles = dirContents.filter{ $0.contains(fileExtension)}
            for fileName in filteredFiles {
                if let documentsURL = documentsURL {
                    let sourceURL = Bundle.main.bundleURL.appendingPathComponent(fileName)
                    let destURL = documentsURL.appendingPathComponent(fileName)
                    do { try FileManager.default.copyItem(at: sourceURL, to: destURL) } catch { }
                }
            }
        } catch { }
    }
}

用法:

copyFilesFromBundleToDocumentsFolderWith(fileExtension: ".txt")

推荐阅读