试图清除文件夹Swift

时间:2017-09-06 12:56:18

标签: swift

我使用以下方法将文件(下载)添加到文档目录:

x

它只是将文件下载到沙箱中的文档文件夹。我找了删除文件夹中文件的方法,并尝试了以下内容:

 static func downloadFileWithLink(linkString : String){

        // Create destination URL
        let documentsUrl:URL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
        let destinationFileUrl = documentsUrl.appendingPathComponent("downloadedFile")

        //Create URL to the source file you want to download
        let fileURL = URL(string: linkString)

        let sessionConfig = URLSessionConfiguration.default
        let session = URLSession(configuration: sessionConfig)

        let request = URLRequest(url:fileURL!)

        let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
            if let tempLocalUrl = tempLocalUrl, error == nil {
                // Success
                if let statusCode = (response as? HTTPURLResponse)?.statusCode {
                    print("Successfully downloaded. Status code: \(statusCode)")
                }

                do {
                    try FileManager.default.copyItem(at: tempLocalUrl, to: destinationFileUrl)
                } catch (let writeError) {
                    print("Error creating a file \(destinationFileUrl) : \(writeError)")
                }

            } else {
                print("Error took place while downloading a file. Error description: %@", error?.localizedDescription);
            }
        }
        task.resume()

    }

然而,当我检查沙箱时,下载的文件仍然在这里。如何删除它?

1 个答案:

答案 0 :(得分:1)

deleteFiledInDocDirectory()中,您使用的是NSTemporaryDirectory,而不是最初保存文件的文档目录。

使用以下内容更改tempFolderPath

guard let tempFolderPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else {
    return   // documents directory not found for some reason
}

完整的方法:

static func deleteFiledInDocDirectory(){
    guard let tempFolderPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first?.absoluteString else {
        return   // documents directory not found for some reason
    }

    let fileManager = FileManager.default

    do {
        let filePaths = try fileManager.contentsOfDirectory(atPath: tempFolderPath)
        for filePath in filePaths {
            try fileManager.removeItem(atPath: tempFolderPath + filePath)
        }
    } catch {
        print("Could not clear temp folder: \(error)")
    }
}