cache.db-wal文件在我的应用程序中包含敏感信息。需要删除Caches目录中的缓存文件。
答案 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)")
}
}