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

时间:2017-03-29 14:56:36

标签: ios iphone caching swift2

cache.db-wal文件在我的应用程序中包含敏感信息。需要删除Caches目录中的缓存文件。

5 个答案:

答案 0 :(得分:3)

这应该适合你。

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)")
}

答案 1 :(得分:1)

在swift 3.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)")
        }
    }

答案 2 :(得分:1)

迅速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)")
    }
}

答案 3 :(得分:1)

Swift 5.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)")
    }
}

答案 4 :(得分:0)

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

 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)")
        }
    }