如何从 swift 2.3 中的缓存目录中删除文件?

How to remove files from Caches directory in swift 2.3?

cache.db-wal 文件在我的 application.Need 中有敏感信息,需要删除 Caches 目录中的缓存文件。

我可以找到上述问题的解决方案。

 func removeNetworkCache() {
        let caches = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0])
        let appId = NSBundle.mainBundle().infoDictionary!["CFBundleIdentifier"] as! String
        let path = String(format:"%@/%@/Cache.db-wal",caches, appId)
        do {
            try NSFileManager.defaultManager().removeItemAtPath(path)
        } catch {
           print("ERROR DESCRIPTION: \(error)")
        }
    }

这应该适合你。

let fileManager = NSFileManager.defaultManager()
let documentsUrl =  NSFileManager.defaultManager().URLsForDirectory(.CachesDirectory, inDomains: .UserDomainMask).first! as NSURL
let documentsPath = documentsUrl.path

do {
    if let documentPath = documentsPath
    {
        let fileNames = try fileManager.contentsOfDirectoryAtPath("\(documentPath)")

        for fileName in fileNames {

            if (fileName == "cache.db-wal")
            {
                let filePathName = "\(documentPath)/\(fileName)"
                try fileManager.removeItemAtPath(filePathName)
            }
        }

        let files = try fileManager.contentsOfDirectoryAtPath("\(documentPath)")
    }

} catch {
    print("Could not clear: \(error)")
}

在swift3.1 ** 在我的例子中,我想通过文件夹删除 JSON 数据,所以我将其命名为 "fsCachedData" 您可以相应地更改名称..**

func removeCache()  {

        let caches = (NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0])
        let appId = Bundle.main.infoDictionary!["CFBundleIdentifier"] as! String
        let path = String(format:"%@/%@/Cache.db-wal",caches, appId)
        do {
            try FileManager.default.removeItem(atPath: path)
        } catch {
            print("ERROR DESCRIPTION: \(error)")
        }
    }

swift 4

func removeNetworkDictionaryCache() {
    let caches = (NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0])
    let appId = Bundle.main.infoDictionary!["CFBundleIdentifier"] as! String
    let path = String(format:"%@/%@/Cache.db-wal",caches, appId)
    do {
        try FileManager.default.removeItem(atPath: path)
    } catch {
        print("ERROR DESCRIPTION: \(error)")
    }
}

Swift5.2解决方案(刚转换代码)

func removeNetworkCache() {
    let caches = (NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0])
    let appId = Bundle.main.infoDictionary!["CFBundleIdentifier"] as! String
    let path = String(format:"%@/%@/Cache.db-wal",caches, appId)
    do {
        try FileManager.default.removeItem(atPath: path)
    } catch {
       print("ERROR DESCRIPTION: \(error)")
    }
}