将文件保存到自定义文件夹

时间:2018-09-24 19:57:23

标签: swift nsfilemanager

在AppDelegate中,如果.documents不存在,我会在其中创建隐藏文件夹:

let fileManager = FileManager.default
    let path  = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
    let audioKitFilesFolder = path.appendingPathComponent(".AudioKitFilesFolder")
    var isDir : ObjCBool = false
    if fileManager.fileExists(atPath: audioKitFilesFolder.absoluteString, isDirectory:&isDir) {
        if isDir.boolValue {
            print("file exists and is a directory")
        } else {
            print("file exists and is not a directory")
        }
    } else {
        do {
        try fileManager.createDirectory(at: audioKitFilesFolder, withIntermediateDirectories: true, attributes: nil)
        } catch {
            print("Can't Create Folder \(error)")
        }
    }

在我的网络API中,我具有将文件从Web保存到.documents的功能。但是我需要将此文件保存到我的隐藏文件夹中。如何为我的copyItem方法获取此文件夹的路径?

Newtwork API函数:

func downloadFile(id: Int, url: URL, fileName: String) {
    var request = URLRequest(url: url)
    URLSession.shared.downloadTask(with: url, completionHandler: { location, response, error in
        guard let location = location, error == nil else { return }
        do {
            let fileManager = FileManager.default
            let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
            let fileURL = documentsURL.appendingPathComponent(fileName)
            try fileManager.copyItem(at: location, to: fileURL)
            try self.router.configureParameters(bodyParameters: ["uuid": UserDefaultsHelper.uuid], urlParameters: nil, request: &request)
        } catch {
            print(error)
        }
    }).resume()

    URLSession.shared.dataTask(with: request) { data, response, error in
        if let response = response {
            print(response)
        }
        if let data = data {
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                print(json)
            } catch {
                print(error)
            }
        }
        }.resume()
}

1 个答案:

答案 0 :(得分:0)

如果您更改

 do {
            let fileManager = FileManager.default
            let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
            let fileURL = documentsURL.appendingPathComponent(fileName)
            try fileManager.copyItem(at: location, to: fileURL)
            try self.router.configureParameters(bodyParameters: ["uuid": UserDefaultsHelper.uuid], urlParameters: nil, request: &request)
        } catch {

 do {
            let fileManager = FileManager.default
            let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
            let audioKitFilesFolder = documentsURL.appendingPathComponent(".AudioKitFilesFolder")

            let fileURL = audioKitFilesFolder.appendingPathComponent(fileName)
            try fileManager.copyItem(at: location, to: fileURL)
            try self.router.configureParameters(bodyParameters: ["uuid": UserDefaultsHelper.uuid], urlParameters: nil, request: &request)
        } catch {

,也许删除。来自。所有位置都有AudioKitFilesFolder