【问题标题】:How to remove files from Caches directory in swift 2.3?如何在 swift 2.3 中从 Caches 目录中删除文件?
【发布时间】:2020-02-13 21:44:04
【问题描述】:

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

【问题讨论】:

    标签: ios iphone caching swift2


    【解决方案1】:

    这应该适合你。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-03-05
              • 2015-01-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-02-05
              相关资源
              最近更新 更多