博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FZEasyFile的使用
阅读量:6338 次
发布时间:2019-06-22

本文共 4846 字,大约阅读时间需要 16 分钟。

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 
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

转载地址:http://maooa.baihongyu.com/

你可能感兴趣的文章
SpringCloud统一配置之使用配置
查看>>
使用IntelliJ IDEA的小技巧快乐编程(2)
查看>>
Callable,Runnable比较及用法
查看>>
Net Core 生成图形验证码
查看>>
《算法的乐趣》读书笔记
查看>>
php用两个栈来实现队列
查看>>
PHP开源框架Laravel的安装与配置
查看>>
c 二维数组动态分配和释放
查看>>
使用GridSearchCV寻找最佳参数组合——机器学习工具箱代码
查看>>
Java文件下载
查看>>
[Angular] Remove divs to Preserve Style and Layout with ng-container in Angular
查看>>
ambassador 学习四 grpc 处理
查看>>
省市区三级数据的MYSQL内容
查看>>
在CentOS7上安装和使用ZooKeeper最新版本(V3.4.12)
查看>>
gdb调试
查看>>
Silverlight & Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)...
查看>>
api的管理工具
查看>>
mac os app 开发
查看>>
intelliJ IDEA 怎么添加本地的idea web项目
查看>>
并发编程--CAS自旋锁
查看>>