`

swift -> 清除缓存 和 获取缓存大小

 
阅读更多

 

 

    *** 清空缓存 

 

 

   //清除 Library/Caches
    func clearCaches(){
        do {
            try deleteLibraryFolderContents(folder: "Caches")
            //print("clear done")
        } catch {
            //print("clear Caches Error")
        }
    }
    
    
    
    //
    private func deleteLibraryFolderContents(folder: String) throws {
        let manager = FileManager.default
        let library = manager.urls(for: FileManager.SearchPathDirectory.libraryDirectory, in: .userDomainMask)[0]
        let dir = library.appendingPathComponent(folder)
        let contents = try manager.contentsOfDirectory(atPath: dir.path)
        for content in contents {
            //如果是快照就继续
            if(content == "Snapshots"){continue;}
            do {
                try manager.removeItem(at: dir.appendingPathComponent(content))
                //print("remove cache success:"+content)
            } catch where ((error as NSError).userInfo[NSUnderlyingErrorKey] as? NSError)?.code == Int(EPERM) {
                //print("remove cache error:"+content)
                // "EPERM: operation is not permitted". We ignore this.
                #if DEBUG
                    //print("Couldn't delete some library contents.")
                #endif
            }
        }
    }
 

 

 

 

 

** 统计缓存大小

    var fileSize:Int = 0;
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(false)
        UIView.animate(withDuration: 0.3, animations: {() -> Void in
            self.v.frame.origin.y = 0;
        }){(finished) -> Void in
            
            DispatchQueue.global().async {
                self.fileSize  = self.fileSizeOfCache();
                //获取数据异步
                DispatchQueue.main.async {
                    //修改主线程UI
                    self.clearLable.text = "已用 "+String(self.fileSize)+" MB";
                }
            }
        }

        
        
    }

 

    //获取缓存大小
    func fileSizeOfCache()-> Int {
        
        // 取出cache文件夹目录 缓存文件都在这个目录下
        let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first
        //缓存目录路径
        //print(cachePath)
        
        // 取出文件夹下所有文件数组
        let fileArr = FileManager.default.subpaths(atPath: cachePath!)
        
        //快速枚举出所有文件名 计算文件大小
        var size = 0
        for file in fileArr! {
            
            // 把文件名拼接到路径中
            let path = cachePath?.appending("/\(file)")
            // 取出文件属性
            let floder = try! FileManager.default.attributesOfItem(atPath: path!)
            // 用元组取出文件大小属性
            for (abc, bcd) in floder {
                // 累加文件大小
                if abc == FileAttributeKey.size {
                    size += (bcd as AnyObject).integerValue
                }
            }
        }
        
        let mm = size / 1024 / 1024
        
        return mm
    }

 

 

分享到:
评论

相关推荐

    swift-NSURLSession网络请求的封装添加了缓存功能显示缓存大小删除缓存等功能

    本文将深入探讨如何对`NSURLSession`进行封装,以实现带有缓存功能的网络请求,包括查看缓存大小和清除缓存。这在优化用户体验、减少不必要的网络数据消耗以及提高应用性能方面具有重要意义。 首先,`NSURLSession`...

    swift-Cache.swift-一款简单易用的缓存库

    6. **扩展性**:`Cache.swift` 可能允许用户自定义缓存策略或者实现自己的缓存子类,以满足特定需求,如自定义过期时间、缓存大小限制等。 7. **版本c84effe**:在`soffes-Cache-c84effe`这个特定的版本中,可能...

    XHNetworkCache:行代码将网络数据持久化-支持数据同步初始化写入及更新,缓存数据读取,获取缓存数据大小,缓存数据清除

    XHNetworkCache ... 2017.06.16-v1.3.0->缓存及获取缓存接口增加请求参数(可选)... 2016.09.04-v1.2.3->增加+(NSString *)cacheSizeFormat方法... 2016.08.12-v1.2.1->增加获取缓存路径接口... 2016.07.06

    ios-清除缓存.zip

    1. 应用启动时清理:在应用启动时检查缓存大小,如果超过设定阈值,执行清理操作。 2. 定期清理:设置定时器,每隔一段时间自动清理缓存。 3. 用户触发:提供清理缓存的设置选项,让用户手动触发。 五、注意事项 ...

    缓存:Swift缓存库

    3. 初始化和配置:根据库的文档设置缓存的配置,如缓存路径、大小限制等。 4. 使用缓存:调用提供的API进行数据的存取。例如,将数据存入缓存: ```swift let cache = Cache() cache.set(data, forKey: "key") `...

    telescope:面向SwiftUI的远程图像缓存系统

    6. 高度可定制:Telescope的缓存策略和行为可以根据项目需求进行调整,如设置自定义的缓存大小限制、过期策略等。 在压缩包"telescope-main"中,包含了Telescope库的主要源代码和可能的示例项目。开发者可以通过...

    iOS 缓存机制

    1. 合理设置缓存大小限制,避免占用过多内存。 2. 使用异步操作加载缓存,避免阻塞主线程。 3. 定期清理过期的缓存数据,保持缓存的活力。 4. 考虑缓存的读写效率,选择合适的缓存存储方式。 5. 结合用户行为分析,...

    URLCache.zip_URLCache_apple sdk_caching

    - 适当调整缓存大小以平衡性能和内存消耗。 - 注意处理缓存失效,定期清理过期或不再使用的资源。 - 在某些情况下,如用户明确要求刷新内容时,应禁用缓存或清除特定资源的缓存。 总之,URLCache是Apple SDK中一个...

    ios-一行代码持久化网络数据.zip

    此外,库提供了清除全部缓存、根据URL清除特定缓存的方法,方便在需要时进行维护。 在实际应用中,数据持久化的优化不仅关乎性能,也关乎数据的安全性和隐私。XHNetworkCache确保了敏感信息不会暴露,因为所有缓存...

    ios-微博cell自动布局.zip

    为了优化,可以在适当的地方缓存Cell的高度,如在`prepareForReuse`方法中清除高度缓存,在`heightForRowAt`中先尝试返回缓存值,只有在必要时才重新计算。 7. 使用Swift或Objective-C实现: - 本项目可能提供了...

    这是一个工具类ClearFileCache

    这样,你就可以轻松地获取缓存大小并进行清理。 6. **注意事项** 在实际使用中,需要注意的是,不要对系统重要文件夹或者用户数据文件夹进行清理,以免造成数据丢失或应用程序异常。另外,由于清理操作是异步的,...

    IOS 基本文件操作实例详解

    通过其提供的单例SDImageCache,我们可以方便地获取缓存大小和执行清除操作。例如,要获取缓存大小,可以调用getSize方法得到以字节为单位的总大小,然后转换为MB。示例代码如下: ```swift let cache = ...

    webview展示

    9. **布局和样式**:WebView的大小和样式可以通过原生布局控件来调整。在Android中,可以使用`LayoutParams`来设置宽高;在iOS中,可以通过AutoLayout或Size Classes来布局。 10. **更新和兼容性**:随着平台版本的...

    iOS擦除图片的例子

    最后,为了优化性能,可以考虑利用离屏渲染(Off-screen Rendering)和图形缓存,避免频繁地在屏幕上下文中绘制,尤其是在处理大量或高分辨率图片时。 总结起来,实现“iOS擦除图片”的功能需要掌握...

    聊天输入面板

    这可能涉及到内存管理、异步加载和缓存策略等。 6. **布局管理** 使用AutoLayout或Size Classes进行布局,确保在横竖屏切换时输入面板的布局能正确调整。 7. **兼容性** 由于项目声明支持iOS 6.0及以上版本,...

Global site tag (gtag.js) - Google Analytics