Iphone文件操作和字符串操作的工具类

fmms 12年前

这个工具类每必要多解释,直接上代码:

.h文件:

    #import <Foundation/Foundation.h>        #define DEFAULT_DATE_TIME_FORMAT (@"yyyy-MM-dd'T'HH:mm:ss'Z'")        #define DEFAULT_DATE_FORMAT (@"yyyy-MM-dd")        #define DEFAULT_TIME_FORMAT (@"HH:mm:ss'Z'")                @interface FileUtils : NSObject {                    }                +(NSString*) settingPath;        +(NSString*) cachePath;        +(BOOL) clearCache:(NSError**)error;        +(NSString*) fileAtBundleResource:(NSString*)file;        +(BOOL) fileExist:(NSString*)file;        +(BOOL) fileExistAtCache:(NSString*)file;        +(NSString*) cachedFile:(NSString*)file;        +(BOOL) writeToFile:(NSString*)fileWithPath withData:(NSData*)data;        +(BOOL)deleteFile:(NSString*)fileWithPath;        +(NSString*) documentPathWith:(NSString*)cmp;        @end                        @interface ValueUtils : NSObject {                    }        +(BOOL) isEmpty:(NSString*)text;        +(BOOL) boolValue:(NSDictionary*)dict forKey:(id)key;        +(float) floatValue:(NSDictionary*)dict forKey:(id)key;        +(NSInteger) intValue:(NSDictionary*)dict forKey:(id)key;        +(NSString*) stringValue:(NSDictionary*)dict forKey:(id)key;        +(NSArray*) arrayValue:(NSDictionary*)dict forKey:(id)key;        +(id) noneNullValue:(NSDictionary*)dict forKey:(id)key;        +(NSDictionary*) dictionaryValue:(NSDictionary*)dict forKey:(id)key;        +(BOOL) stringEquals:(NSString*)str1 to:(NSString*)str2;        +(BOOL) caseEquals:(NSString*)str1 to:(NSString*)str2;        +(NSString*) refineUrl:(NSString*)url;        +(BOOL) isURLString:(NSString*)text;        +(BOOL) startWith:(NSString*)prefix forString:(NSString*)text;        +(BOOL) endWith:(NSString*)suffix forString:(NSString*)text;        +(NSDate *)stringToDate:(NSString *)string withFormat:(NSString*)fmt;        +(NSString*) dateToString:(NSDate*)date withFormat:(NSString*)fmt;        +(NSString*) idToString:(id)obj;        +(BOOL)  booleanToBool:(id)bobj;        @end  
.m文件:
    #import "FileUtils.h"        #import "CJSONDeserializer.h"        #import "CJSONSerializer.h"                @implementation FileUtils                +(NSString*) settingPath        {            ////Make a new director            NSFileManager *fileManager = [NSFileManager defaultManager];            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);            NSString *documentsDirectory = [paths objectAtIndex:0];                        documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@".settings"];                        BOOL folder = NO;            BOOL exist = [fileManager fileExistsAtPath:documentsDirectory isDirectory:&folder];            if ( exist == YES && folder == YES ) {                return [documentsDirectory stringByAppendingPathComponent:@"measets.ini"];            }else{                NSError* error = nil;                [fileManager createDirectoryAtPath:documentsDirectory                        withIntermediateDirectories:YES                                        attributes:nil                                             error:&error];                if( error != nil ){                    NSLog(@"Can not create directory %@.  Error is %@.", documentsDirectory,                          [error description]);                    return nil;                }                return documentsDirectory;            }            /***            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);             NSString *documentsDirectoryPath = [paths objectAtIndex:0];            NSString *secondaryDirectoryPath = [documentsDirectoryPath stringByAppendingPathComponent:@"secondary"];            NSString *databaseFile = [secondaryDirectoryPath stringByAppendingPathComponent:@"database.db"];                        NSFileManager *fileManager = [NSFileManager defaultManager];            [fileManager removeItemAtPath:databaseFile error:NULL];            ***/        }                +(BOOL) fileExist:(NSString*)file        {            NSFileManager *fileManager = [NSFileManager defaultManager];            return [fileManager fileExistsAtPath:file];        }                +(NSString*) fileAtBundleResource:(NSString*)file        {            return [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:file];        }                +(BOOL) fileExistAtCache:(NSString*)file        {            return [self fileExist:[self cachedFile:file]];        }                +(NSString*) cachedFile:(NSString*)file        {            NSString* fileAtCache = [NSString stringWithFormat:@"%@%@",[self cachePath], file];            return fileAtCache;        }                +(BOOL) writeToFile:(NSString*)fileWithPath withData:(NSData*)data        {            BOOL folder = NO;            NSFileManager *fileManager = [NSFileManager defaultManager];                        NSString* fileName = [fileWithPath lastPathComponent];            NSInteger toIndex = [fileWithPath length] - [fileName length];            NSString* path = [fileWithPath substringToIndex:toIndex];            BOOL exist = [fileManager fileExistsAtPath:path isDirectory:&folder];            if (  exist != YES ) {                NSError* error = nil;                [fileManager createDirectoryAtPath:path                        withIntermediateDirectories:YES                                        attributes:nil                                             error:&error];                if( error != nil ){                    NSLog(@"Can not create directory %@.  Error is %@.", path,                          [error description]);                    return NO;                }            }            if ( data != nil ) {                return [data writeToFile:fileWithPath atomically:YES];             }            return NO;        }                +(NSString*) documentPathWith:(NSString*)cmp        {            ////Make a new director            NSFileManager *fileManager = [NSFileManager defaultManager];            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);            NSString *documentsDirectory = [paths objectAtIndex:0];                        documentsDirectory = [documentsDirectory stringByAppendingPathComponent:cmp];                        BOOL folder = NO;            BOOL exist = [fileManager fileExistsAtPath:documentsDirectory isDirectory:&folder];            if (  exist == YES && folder == YES ) {                return documentsDirectory;            }else{                NSError* error = nil;                [fileManager createDirectoryAtPath:documentsDirectory                        withIntermediateDirectories:YES                                        attributes:nil                                             error:&error];                if( error != nil ){                    NSLog(@"Can not create directory %@.  Error is %@.", documentsDirectory,                          [error description]);                    return nil;                }                return documentsDirectory;            }        }                +(NSString*) cachePath        {            ////Make a new director            NSFileManager *fileManager = [NSFileManager defaultManager];            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);            NSString *documentsDirectory = [paths objectAtIndex:0];                        documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@".caches"];                        BOOL folder = NO;            BOOL exist = [fileManager fileExistsAtPath:documentsDirectory isDirectory:&folder];            if (  exist == YES && folder == YES ) {                return documentsDirectory;            }else{                NSError* error = nil;                [fileManager createDirectoryAtPath:documentsDirectory                        withIntermediateDirectories:YES                                        attributes:nil                                             error:&error];                if( error != nil ){                    NSLog(@"Can not create directory %@.  Error is %@.", documentsDirectory,                          [error description]);                    return nil;                }                return [documentsDirectory stringByAppendingPathComponent:@"measets.ini"];            }        }                +(BOOL)deleteFile:(NSString*)fileWithPath        {            NSFileManager *fileManager = [NSFileManager defaultManager];            NSError* error = nil;            BOOL ret = [fileManager removeItemAtPath:fileWithPath error:&error];            if ( error != nil ) {                NSLog(@"DeleteFile with an error: %@.", [error description]);            }            return ret;        }                +(BOOL) clearCache:(NSError**)error        {            NSFileManager *fileManager = [NSFileManager defaultManager];            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);            NSString *documentsDirectory = [paths objectAtIndex:0];            documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@".caches"];            [fileManager removeItemAtPath:documentsDirectory error:error];            return YES;        }                @end                        @implementation ValueUtils                +(BOOL) isEmpty:(NSString*)text        {            if (text == nil) {                return YES;            }            if ([text length] == 0 ) {                return YES;            }            return NO;        }                +(NSString*) idToString:(id)obj        {            if ( obj == nil ) {                return nil;            }                        if ( [obj isKindOfClass:[NSNull class]]) {                return nil;            }                        if ( [obj isKindOfClass:[NSString class]]) {                return (NSString*)obj;            }else if ( [obj isKindOfClass:[NSArray class]] ){                NSMutableString* ntf = [NSMutableString string];                for (id t in obj ) {                    [ntf appendString:[self idToString:t]];                    [ntf appendString:@","];                }                return ntf;            }else {                if( CFGetTypeID(obj) == CFBooleanGetTypeID() ){                    return [NSString stringWithFormat:@"%@", (CFBooleanGetValue((CFBooleanRef)obj) == true ? @"true" : @"false") ];                }                if ( sizeof(obj) == sizeof(BOOL) ) {                    //return (BOOL)obj == YES ? @"true" : @"false";                }                if( [obj respondsToSelector:@selector(stringValue)] ){                    return [obj stringValue];                }                return [obj description];            }        }                +(BOOL) boolValue:(NSDictionary*)dict forKey:(id)key        {            id bl = [dict objectForKey:key];            if ( bl == nil || [bl isKindOfClass:[NSNull class]]) {                return NO;            }            if ( [bl isKindOfClass:[NSString class]]) {                NSString* cstr = [bl lowercaseString];                if ( [cstr isEqualToString:@"yes"] || [cstr isEqualToString:@"true"]) {                    return YES;                }                return [cstr boolValue];            }            if ( CFBooleanGetValue((CFBooleanRef)bl) ) {                return YES;            }            return NO;        }                +(float) floatValue:(NSDictionary*)dict forKey:(id)key{            id bl = [dict objectForKey:key];            if ( bl == nil || [bl isKindOfClass:[NSNull class]]) {                return 0.0f;            }            return [bl floatValue];        }                +(NSInteger) intValue:(NSDictionary*)dict forKey:(id)key        {            id bl = [dict objectForKey:key];            if ( bl == nil || [bl isKindOfClass:[NSNull class]]) {                return 0.0f;            }            return [bl floatValue];            }                +(NSString*) stringValue:(NSDictionary*)dict forKey:(id)key        {            id bl = [dict objectForKey:key];            if ( bl == nil || [bl isKindOfClass:[NSNull class]]) {                return nil;            }            return [self idToString:bl];        }                +(NSArray*) arrayValue:(NSDictionary*)dict forKey:(id)key        {            id bl = [dict objectForKey:key];            if ( bl == nil || [bl isKindOfClass:[NSNull class]]) {                return nil;            }            if ( [bl isKindOfClass:[NSArray class]]) {                return (NSArray*)bl;            }            return nil;        }                +(NSDictionary*) dictionaryValue:(NSDictionary*)dict forKey:(id)key        {            id bl = [dict objectForKey:key];            if ( bl == nil || [bl isKindOfClass:[NSNull class]]) {                return nil;            }            return (NSDictionary*)bl;        }                +(id) noneNullValue:(NSDictionary*)dict forKey:(id)key        {            id bl = [dict objectForKey:key];            if ( bl == nil || [bl isKindOfClass:[NSNull class]]) {                return nil;            }            return bl;        }                +(BOOL) stringEquals:(NSString*)str1 to:(NSString*)str2        {            if ( str1 == nil || str2 == nil ) {                return NO;            }            return [str1 compare:str2 options:NSCaseInsensitiveSearch] == NSOrderedSame;        }                +(BOOL) caseEquals:(NSString*)str1 to:(NSString*)str2        {            return (str1 == nil || str2 == nil) ? NO : [str1 isEqualToString:str2];        }                +(BOOL) startWith:(NSString*)prefix forString:(NSString*)text;        {            if ( text != nil && prefix != nil ){                if ( [prefix length] > [text length] ) {                    return NO;                }                                NSString* prestr = [text substringToIndex:[prefix length]];                if ( [self stringEquals:prestr to:prefix] ) {                    return YES;                }                            }            return NO;        }                +(BOOL) endWith:(NSString*)suffix forString:(NSString*)text        {            if ( text != nil && suffix != nil ){                if ( [suffix length] > [text length] ) {                    return NO;                }                NSInteger len = [text length] - [suffix length];                NSString* sufstr = [text substringFromIndex:len];                if ( [self caseEquals:sufstr to:suffix] ) {                    return YES;                }                            }            return NO;        }                +(BOOL) isURLString:(NSString*)text        {            if ( [text length] > 6 ) {                NSString* prefix = [text substringToIndex:6];                if ( [self stringEquals:prefix to:@"http:/"] || [self stringEquals:prefix to:@"https:"] ) {                    return YES;                } else if ( [self stringEquals:prefix to:@"local:" ] ){                    return YES;                }            }            if ( [self startWith:@"/" forString:text] ){                return YES;            }            return NO;        }                +(NSString*) refineUrl:(NSString*)url        {            return url;        }                +(BOOL)  booleanToBool:(id)bobj        {            if ( bobj == nil ) {                return NO;            }            if ( [bobj isKindOfClass:[NSString class]] ) {                return [bobj caseInsensitiveCompare:@"yes"] == 0 || [bobj caseInsensitiveCompare:@"true"] == 0;            }else if ( [bobj respondsToSelector:@selector(boolValue)] ){                return [bobj boolValue];            }else {                return CFBooleanGetValue((CFBooleanRef)bobj);            }                        return NO;        }                +(NSDate *)stringToDate:(NSString *)string withFormat:(NSString*)fmt{              NSDateFormatter *formatter = [[NSDateFormatter alloc] init];            [formatter setTimeZone:[NSTimeZone defaultTimeZone]];            //#define kDEFAULT_DATE_TIME_FORMAT (@"yyyy-MM-dd'T'HH:mm:ss'Z'")            NSString* format = fmt == nil ? DEFAULT_DATE_TIME_FORMAT : fmt;            [formatter setDateFormat:format];            NSDate *date = [formatter dateFromString:string];            [formatter release];            return date;        }                +(NSString*) dateToString:(NSDate*)date withFormat:(NSString*)fmt        {            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];            [formatter setTimeZone:[NSTimeZone defaultTimeZone]];            //#define kDEFAULT_DATE_TIME_FORMAT (@"yyyy-MM-dd'T'HH:mm:ss'Z'")            NSString* format = fmt == nil ? DEFAULT_DATE_FORMAT : fmt;            [formatter setDateFormat:format];            NSString* dateStr = [formatter stringFromDate:date];            [formatter release];            return dateStr;        }        @end