FZEasyFile的使用

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

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

以前你需要这么做才行:

NSFileManager *fileManager = [NSFileManager defaultManager];

    //获取document路径,括号中属性为当前应用程序独享
NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [directoryPaths objectAtIndex:]; //查找文件夹,如果不存在,就创建一个文件夹
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 != )
{
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

FZEasyFile的使用的更多相关文章

  1. iOS 利用FZEasyFile本地保存 和 常规保存

    1.常规保存(较麻烦) NSFileManager *fileManager = [NSFileManager defaultManager]; //获取document路径,括号中属性为当前应用程序 ...

随机推荐

  1. RT-Thread Nano移植

    RT_Thread移植:在MDK下以组件形式提供 https://pan.baidu.com/s/1miac86O#list/path=%2Fsharelink4264488348-377157516 ...

  2. 【python】-matplotlib.pylab常规用法

    目的: 了解matplotlib.pylab常规用法 示例 import matplotlib.pylab as pl x = range(10) y = [i * i for i in x] pl. ...

  3. docker安装mongo初体验

    1.docker安装在此不做介绍,请自行百度:个人环境是在windows下运行cmd执行docker命令2.打算在docker下安装使用mongo,顺带熟悉docker,拉开篇章3.docker下安装 ...

  4. LSTM时间序列预测学习

    一.文件准备工作 下载好的例程序 二.开始运行 1.在程序所在目录中(chapter_15)打开终端   输入下面的指令运行 python train_lstm.py 此时出现了报错提示没有安装mat ...

  5. vue笔记精华部分

    以 _ 或 $ 开头的属性 不会 被 Vue 实例代理,因为它们可能和 Vue 内置的属性.API 方法冲突.你可以使用例如 vm.$data._property 的方式访问这些属性. mixin的使 ...

  6. gson日期转换问题

    转:http://blog.csdn.net/liao_leo/article/details/44593095 今天遇到个很奇怪的问题,gson解析日期字符串,本地执行可以,服务器上执行就报错. 这 ...

  7. Robot Framework常用关键字介绍

    常用关键字介绍 在学习一门编程语言的时候,大多教材都是从打印“hello world”开始.我们可以像编程语言一样来学习 Robot Framework.虽然通过 RIDE 提供“填表”一样的写测试用 ...

  8. CSS生成小三角

    前言:小三角的应用场景:鼠标移动到某个按钮上面,查看信息详情时,信息详情弹出框有时候会需要一个小三角. 代码如下: <div id='triangle'></div> #tri ...

  9. JavaScript设计模式系列学习笔记目录

    说明 本系列笔记参考书籍<JavaScript设计模式>.<JavaScript高级程序设计3> 参考博客:汤姆大叔博客:http://www.cnblogs.com/TomX ...

  10. h5移动端设置键盘搜索

    点击键盘上的搜索按钮实现页面跳转 <form action="#list?goods_title={{message?message:''}}" @submit.preven ...