沙盒帮助类

.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

 

posted on 2019-03-06 16:41  兰歌er  阅读(135)  评论(0编辑  收藏  举报