iOS沙盒

前言:文件夹种类

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


image.png

介绍

1.Documents

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

NSString *docDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
2.Library
  • Caches: 存储缓存数据,在设备低存储空间时可能会被删除,iTunes或iCloud不会对其进行备份。
  • Preferences:保存app的偏好设置(NSUserDefaults)(会以BundleId.plist形式存储)

获取路径方法

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
  • 存放临文件,iTunes不会同步该目录,重启手机杀死程序都不会立马清空,应该有时间限制具体多久没再做测试

获取路径方法

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];


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。