zoukankan      html  css  js  c++  java
  • iOS 沙盒常用操作 2019.03.06

    沙盒帮助类

    .h文件

    #pragma mark 沙盒常用方法
    /*
     默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp和一个应用程序文件(也是一个文件)。因为应用的沙盒机制,应用只能在几个目录下读写文件
     
     Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
     
     Library:存储程序的默认设置或其它状态信息;
     
     Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
     
     tmp:提供一个即时创建临时文件的地方。
     
     iTunes在与iPhone同步时,备份所有的Documents和Library文件。
     
     iPhone在重启时,会丢弃所有的tmp文件。
     
     */
    
    //得到沙盒的root路径
    +(NSString*)getHomePath;
    
    //得到沙盒下Document文件夹的路径
    +(NSString*)getDocumentPath;
    
    //得到Cache文件夹的路径
    +(NSString*)getCachePath;
    
    //得到Library文件夹的路径
    +(NSString*)getLibraryPath;
    
    //得到tmp文件夹的路径
    +(NSString*)getTmpPath;
    
    //文件是否存在
    +(BOOL)isFileExit:(NSString*)path;
    
    //删除文件
    +(void)deleteFile:(NSString*)path;
    
    //复制文件到某个路径
    +(void)copyFile:(NSString*)filePath toPath:(NSString*)path isOverride:(BOOL)overrid;
    
    
    //创建路径
    +(void)createPath:(NSString*)path;
    
    //在document目录下创建子文件路径
    +(void)createDocumentPath:(NSString*)path;
    
    //保存文件到沙盒,如果存在该文件则继续写入
    +(void)saveFile:(NSString*)path withFileName:(NSString*)name withData:(NSData*)data;
    
    //保存文件到沙盒,如果存在该文件则继续写入
    +(void)saveFile:(NSString*)path withFileName:(NSString*)name withData:(NSData*)data isCover:(BOOL)cover;
    
    //获取cache目录下的图片文件夹,没有则创建
    +(NSString*)getCachePic;
    
    //获取cache目录下的video文件夹,没有则创建
    +(NSString*)getCacheVideo;
    
    //获取cache目录下的voice文件夹,没有则创建
    +(NSString*)getCacheVoice;
    View Code

    .m文件

    +(NSString*)getHomePath{
        return NSHomeDirectory();
    }
    
    
    
    +(NSString*)getDocumentPath{
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *path = [paths objectAtIndex:0];
        return path;
    }
    
    
    +(NSString*)getCachePath{
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *path = [paths objectAtIndex:0];
        return path;
    }
    
    
    +(NSString*)getLibraryPath{
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
        NSString *path = [paths objectAtIndex:0];
        return path;
    }
    
    
    +(NSString*)getTmpPath{
        NSString *path = NSTemporaryDirectory();
        return path;
    }
    
    
    +(BOOL)isFileExit:(NSString*)path{
        return [[NSFileManager defaultManager] fileExistsAtPath:path];
    }
    
    
    +(void)deleteFile:(NSString*)path{
        if ([self isFileExit:path]) {
            NSError *error;
            [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
            if (error) {
                NSLog(@"删除%@出错:%@",path,error.domain);
            }
        }
    }
    
    
    +(void)copyFile:(NSString*)filePath toPath:(NSString*)path isOverride:(BOOL)overrid{
        NSFileManager * mananger=[NSFileManager defaultManager];
        if (overrid) {
            [self deleteFile:filePath];
        }else{
            if ([self isFileExit:path]) {
                return;
            }
        }
        [self deleteFile:path];
        
        NSString * parentPath=[path stringByDeletingLastPathComponent];
        if (![self isFileExit:parentPath]) {
            [self createPath:parentPath];
        }
        
        NSError * error;
        [mananger copyItemAtPath:filePath toPath:path error:&error];
        if (error) {
            NSLog(@"复制%@出错:%@",path,error.domain);
        }
    }
    
    
    +(void)createPath:(NSString*)path{
        if (![self isFileExit:path]) {
            NSFileManager * fileManager=[NSFileManager defaultManager];
            NSString * parentPath=[path stringByDeletingLastPathComponent];
            if ([self isFileExit:parentPath]) {
                NSError * error;
                [fileManager createDirectoryAtPath:path withIntermediateDirectories:path attributes:nil error:&error];
            }else{
                [self createPath:parentPath];
                [self createPath:path];
            }
            
        }
    }
    
    +(void)createDocumentPath:(NSString*)path{
        NSString *pathRestul=[NSString stringWithFormat:@"%@/%@",[self getDocumentPath],path];
        [self createPath:pathRestul];
    }
    
    
    +(void)saveFile:(NSString*)path withFileName:(NSString*)name withData:(NSData*)data{
        [self saveFile:path withFileName:name withData:data isCover:NO];
    }
    
    +(void)saveFile:(NSString*)path withFileName:(NSString*)name withData:(NSData*)data isCover:(BOOL)cover{
        [self createPath:path];
        NSData * resultData=nil;
        NSString * resultPath=[NSString stringWithFormat:@"%@/%@",path,name];
        if ([self isFileExit:resultPath]&&cover) {
            NSMutableData * dataOri=[NSMutableData dataWithContentsOfFile:resultPath];
            [dataOri appendData:data];
            resultData=dataOri;
        }else{
            resultData=data;
        }
        
        [[NSFileManager defaultManager] createFileAtPath:resultPath contents:resultData attributes:nil];
    }
    
    +(NSString*)getCachePic{
        NSString * pic=[NSString stringWithFormat:@"%@/pic",[self getCachePath]];
        if (![self isFileExit:pic]) {
            [self createPath:pic];
        }
        
        return pic;
    }
    +(NSString*)getCacheVideo{
        
        NSString * video =[NSString stringWithFormat:@"%@/video",[self getCachePath]];
        if (![self isFileExit:video]) {
            [self createPath:video];
        }
        
        return video;
    }
    
    +(NSString*)getCacheVoice{
        NSString * voice=[NSString stringWithFormat:@"%@/voice",[self getCachePath]];
        if (![self isFileExit:voice]) {
            [self createPath:voice];
        }
        return voice;
    }
    View Code
    该怎样的自然就会是怎样. -----------------------------------------------------兰小妹
  • 相关阅读:
    vue 购买弹出框 动画
    vue 和animate.css 的动画使用
    获得url地址?后的参数
    Java 实现随机数组元素升降序
    java for循环实现九九乘法表
    java 随机生成字符串验证码
    Mysql插入值时,避免重复插入
    Mysql的unique和primary key
    2020 3.6日电话面试(某外包公司)
    Intellij IDEA配置javaweb项目
  • 原文地址:https://www.cnblogs.com/YAlan0/p/10484205.html
Copyright © 2011-2022 走看看