https://github.com/YouXianMing

FZEasyFile的使用

FZEasyFile的使用

https://github.com/jiecao-fm/FZEasyFile

 

操作沙盒文件很恶心,但用上FZEasyFile就变得简单了.

以前你需要这么做才行:

NSFileManager *fileManager = [NSFileManager defaultManager];

    //获取document路径,括号中属性为当前应用程序独享
    NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [directoryPaths objectAtIndex:0];

    //查找文件夹,如果不存在,就创建一个文件夹
    NSString *dir = [documentDirectory stringByAppendingPathComponent:@SAVEDIR];
    NSLog(@"cache dir %@", dir);
    if(![fileManager fileExistsAtPath:dir])
    {
        if(![fileManager createDirectoryAtPath:dir withIntermediateDirectories:YES attributes:nil error:nil])
        {
            NSLog(@"create dir:(%@) error", dir);
            return;
        }
    }

    //定义记录文件全名以及路径的字符串filePath
    NSString *filePath = [dir stringByAppendingPathComponent:[[NSString alloc]initWithFormat:@"/%@", filename]];

    //查找文件,如果不存在,就创建一个文件
    NSData *data = [lHtml dataUsingEncoding:NSUTF8StringEncoding];
    if (![fileManager fileExistsAtPath:filePath]) {
        [fileManager createFileAtPath:filePath contents:data attributes:nil];
    }

现在你只需要这么做:

FZEasyFile *easyFile = [FZEasyFile sharedInstance];
[easyFile createFile:fileName overwrite:NO];
NSOutputStream *output = [NSOutputStream outputStreamToFileAtPath:[easyFile fullFileName:fileName] append:NO];

so easy :)

 

附录:

以下为我自己修改的版本,感谢原作者的分享精神!

EasyFile.h

//
//  EasyFile.h
//  EasyFile
//
//  Copyright (c) 2014年 zhou jun All rights reserved.
//

#import <Foundation/Foundation.h>

typedef enum
{
    
    /*
     /Documents
     /Library/Caches
     /Library/Preferences
     /tmp
     */
    
    DOCUMENTS = 0x99,
    CACHES,
    PREFERENCES,
    TMP,
    
} EFolderFlag;

@interface EasyFile : NSObject

/**
 convert the short file name to full file name. e.g. "mycache/user/icon.png" -> "/Users/zhoujun/Library/Application Support/iPhone Simulator/7.1/Applications/ABCE2119-E864-4492-A3A9-A238ADA74BE5/Documents/mycache/user/icon.png".
 @return full file name.
 */
+ (NSString *)fullFileName:(NSString *)shortFileName folderType:(EFolderFlag)type;

/**
 create a file
 @param fileName fileName file path and file name, e.g. "mycache/user/icon.png".
 @param shouldOverwrite YES:if the file exists then overwirte it, NO:if the file exists then do nothing
 */
+ (void)createFile:(NSString *)fileName overwrite:(BOOL)flag folderType:(EFolderFlag)type;

/**
 test if the file exists.
 @param fileName file path and file name, e.g. "mycache/user/icon.png".
 @return YES if exists, NO otherwise.
 */
+ (BOOL)isFileExists:(NSString *)fileName folderType:(EFolderFlag)type;

@end

EasyFile.m

//
//  EasyFile.m
//  EasyFile
//
//  Copyright (c) 2014年 zhou jun All rights reserved.
//

#import "EasyFile.h"

@implementation EasyFile

+ (NSString *)fullFileName:(NSString *)shortFileName folderType:(EFolderFlag)type
{
    NSString *rootPath = NSHomeDirectory();
    
    switch (type)
    {
        case DOCUMENTS:
            rootPath = [NSHomeDirectory() stringByAppendingString:@"/Documents"];
            break;
          
        case CACHES:
            rootPath = [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"];
            break;
            
        case PREFERENCES:
            rootPath = [NSHomeDirectory() stringByAppendingString:@"/Library/Preferences"];
            break;
            
        case TMP:
            rootPath = [NSHomeDirectory() stringByAppendingString:@"/tmp"];
            break;
            
        default:
            rootPath = [NSHomeDirectory() stringByAppendingString:@"/Documents"];
            break;
    }

    NSString *file = [rootPath stringByAppendingPathComponent:shortFileName];
    
    return file;
}

+ (void)createFile:(NSString *)fileName overwrite:(BOOL)flag folderType:(EFolderFlag)type
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSRange lastTag = [fileName rangeOfString:@"/" options:NSBackwardsSearch];
    
    if (lastTag.location != NSNotFound && lastTag.location != 0)
    {
        NSString *shortDir = [fileName substringToIndex:lastTag.location];
        NSString *fullDir  = [self fullFileName:shortDir folderType:type];
        
        if (![fileManager fileExistsAtPath:fullDir])
        {
            [fileManager createDirectoryAtPath:fullDir
                   withIntermediateDirectories:YES
                                    attributes:nil
                                         error:nil];
        }
    }
    
    NSString *file = [self fullFileName:fileName folderType:type];
    
    if (flag || ![fileManager fileExistsAtPath:file])
    {
        BOOL suc = [fileManager createFileAtPath:file contents:nil attributes:nil];
        NSLog(@"create file(%@) %@", file, suc ? @"successfully" : @"failed");
    }
}

+ (BOOL)isFileExists:(NSString *)fileName folderType:(EFolderFlag)type
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *file = [self fullFileName:fileName folderType:type];
    return [fileManager fileExistsAtPath:file];
}

@end

 

 

 

 

 

 

posted @ 2014-05-06 09:22  YouXianMing  阅读(509)  评论(0编辑  收藏  举报