iOS沙盒

2019-07-12  本文已影响0人  Double丶K

前言:文件夹种类

沙盒目录里面有Documents、Library(内含Caches和Preferences)、temp 、SystemData这几个文件夹,如下图:


image.png

介绍

1.Documents

该目录会被iTunes自动备份,存储需要持久化存储的数据,重要的文件数据需要保存在此处.
-获取路径方法

NSString *docDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
2.Library

获取路径方法

NSString *libDirectory = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject];
//Caches文件夹
NSString * cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
//Preferences
NSArray *preferencesPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *prePath = [[paths firstObject] stringByAppendingString:@"/Preferences"];
3.tmp

获取路径方法

NSString *tmpDir = NSTemporaryDirectory();
4.清除方法

删除路径下的缓存

    //获取文件管理器
    NSFileManager *fileM = [NSFileManager defaultManager];
    //获取缓存路径
    NSString *cachePath = //任意上面的一个路径
    //清除缓存
    [fileM removeItemAtPath:cachePath error:nil];

获取路径下的文件大小

    //获取文件管理器
    NSFileManager *fileM = [NSFileManager defaultManager];
    //获取缓存路径
    NSString *cachePath = //上面的任意路径;
    
    //得到缓存文件列表
    NSArray *childPaths = [fileM subpathsAtPath:cachePath];
    
    //存储文件总长度
    long long size = 0;
    for(NSString *childPath in childPaths){
        //得到文件路径
        NSString *filePath = [cachePath stringByAppendingPathComponent:childPath];
        
        //获取当前是文件还是目录
        BOOL isDir = NO;
        [fileM fileExistsAtPath:filePath isDirectory:&isDir];
 
        if(isDir){//如果是目录则跳出此次循环
            continue;
        }
        //将文件大小累加
        size = size + [[fileM attributesOfItemAtPath:filePath error:nil][NSFileSize] longLongValue];


上一篇下一篇

猜你喜欢

热点阅读