美文网首页
iOS清除缓存功能

iOS清除缓存功能

作者: 没能唱给你的歌曲 | 来源:发表于2016-05-11 10:02 被阅读2238次
    • 计算单个文件大小
    +(float)fileSizeAtPath:(NSString *)path{
        NSFileManager *fileManager=[NSFileManager defaultManager];
        if([fileManager fileExistsAtPath:path]){ long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
            return size/1024.0/1024.0;
        }
        return 0;
    }
    
    • 计算目录大小
    +(float)folderSizeAtPath:(NSString *)path{
        NSFileManager *fileManager=[NSFileManager defaultManager];
        float folderSize;
        if ([fileManager fileExistsAtPath:path]) {
            NSArray *childerFiles=[fileManager subpathsAtPath:path];
            for (NSString *fileName in childerFiles) {
                NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
                folderSize +=[FileService fileSizeAtPath:absolutePath];
            }
         //SDWebImage框架自身计算缓存的实现
            folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
            return folderSize;
        }
        return 0;
    }
    
    • 清除缓存文件
    +(void)clearCache:(NSString *)path{
        NSFileManager *fileManager=[NSFileManager defaultManager];
        if ([fileManager fileExistsAtPath:path]) {
            NSArray *childerFiles=[fileManager subpathsAtPath:path];
            for (NSString *fileName in childerFiles) {
                //如有需要,加入条件,过滤掉不想删除的文件
                NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
                [fileManager removeItemAtPath:absolutePath error:nil];
            }
        }
        [[SDImageCache sharedImageCache] cleanDisk];
    }
    
    • 数据存储到iCloud
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        NSFileManager *fileManager = [[NSFileManager alloc] init];
        NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
        NSURL *fileURL = [NSURL fileURLWithPath:[documentsPath stringByAppendingPathComponent:@"Document.pages"]];
    
        //这里的 identifier 应该设置为 entitlements 的第一个元素;当你使用这段代码的时候需要把 identifier 设置为你自己的真实 identifier
        NSString *identifier = nil;
    
        NSURL *ubiquitousContainerURL = [fileManager URLForUbiquityContainerIdentifier:identifier];
        NSURL *ubiquitousFileURL = [ubiquitousContainerURL URLByAppendingPathComponent:@"Document.pages"];
    
        NSError *error = nil;
        BOOL success = [fileManager setUbiquitous:YES
                                        itemAtURL:fileURL
                                   destinationURL:ubiquitousFileURL
                                            error:&error];
        if (!success) {
            NSLog(@"[Error] %@ (%@) (%@)", error, fileURL, ubiquitousFileURL);
        }
    });
    
    Snip20160511_2.png

    相关文章

      网友评论

          本文标题:iOS清除缓存功能

          本文链接:https://www.haomeiwen.com/subject/pfturttx.html