zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Java Web学习总结(16)——JSP的九个内置对象
    Java Web学习总结(15)——JSP指令
    【我的物联网成长记11】8招带你玩转规则引擎
    云图说|高效管理华为云SAP的“秘密武器”
    Python 中更优雅的日志记录方案
    有了它,Python编码再也不为字符集问题而发愁了!
    【鲲鹏来了】手把手教你创造一个属于自己的鲲鹏开发者环境
    解密昇腾AI处理器--DaVinci架构(计算单元)
    使用Keil5构建GD32450i-EVAL工程
    云图说|SAP技术画册“一点通”
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3710809.html
Copyright © 2011-2022 走看看