dineshthamburu
dineshthamburu

Reputation: 1151

How to remove files from Caches directory in swift 2.3?

The cache.db-wal file have the sensitive information in my application.Need to remove the cache files in Caches directory.

Upvotes: 1

Views: 10219

Answers (5)

Emefar
Emefar

Reputation: 185

In Swift 5.2 solution (Just converted code)

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

Upvotes: 2

NLU
NLU

Reputation: 136

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

Upvotes: 2

OurangZeb Khan
OurangZeb Khan

Reputation: 1132

In swift 3.1 ** In my case i wanted to remove JSON data through the folder so i named it as "fsCachedData" you can change name accordingly..**

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

Upvotes: 1

EfeHelvaci
EfeHelvaci

Reputation: 92

This should work for you.

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

Upvotes: 3

dineshthamburu
dineshthamburu

Reputation: 1151

I could find a solution for the above question.

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

Upvotes: 1

Related Questions