1、常规保存(较麻烦)

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];
} 2、FZEasyFile保存
导入的文件:

//

//  FZEasyFile.h

//  FZEasyFile

//

//  Created by zhou jun on 14-4-29.

//  Copyright (c) 2014年 shannonchou. All rights reserved.

//

#import <Foundation/Foundation.h>

@interface FZEasyFile : NSObject

/**

singleton pattern.

@return the shared instance.

*/

+ (FZEasyFile *)sharedInstance;

/**

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;

/**

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;

/**

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)shouldOverwrite;

@end

//

//  FZEasyFile.m

//  FZEasyFile

//

//  Created by zhou jun on 14-4-29.

//  Copyright (c) 2014年 shannonchou. All rights reserved.

//

#import "FZEasyFile.h"

@implementation FZEasyFile

static FZEasyFile *instance;

+ (FZEasyFile *)sharedInstance {

if (!instance) {

@synchronized (FZEasyFile.class){

if (!instance) {

instance = [[FZEasyFile alloc] init];

}

}

}

return instance;

}

- (NSString *)fullFileName:(NSString *)shortFileName {

//search the "document" path

NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentDirectory = [directoryPaths objectAtIndex:0];

NSString *file = [documentDirectory stringByAppendingPathComponent:shortFileName];

return file;

}

- (BOOL)isFileExists:(NSString *)fileName {

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *file = [self fullFileName:fileName];

return [fileManager fileExistsAtPath:file];

}

- (void)createFile:(NSString *)fileName overwrite:(BOOL)shouldOverwrite {

NSFileManager *fileManager = [NSFileManager defaultManager];

//create file directory, include multilayer directory

NSRange lastTag = [fileName rangeOfString:@"/" options:NSBackwardsSearch];

if (lastTag.location != NSNotFound && lastTag.location != 0) {

NSString *shortDir = [fileName substringToIndex:lastTag.location];

NSString *fullDir = [self fullFileName:shortDir];

NSLog(@"full directory: %@", fullDir);

if (![fileManager fileExistsAtPath:fullDir]) {

[fileManager createDirectoryAtPath:fullDir withIntermediateDirectories:YES attributes:nil error:nil];

}

}

NSString *file = [self fullFileName:fileName];

NSLog(@"full file name:%@", file);

//file not exists or want to overwrite it

if (shouldOverwrite || ![fileManager fileExistsAtPath:file]) {

BOOL suc = [fileManager createFileAtPath:file contents:nil attributes:nil];

NSLog(@"create file(%@) %@", file, suc ? @"successfully" : @"failed");

}

}

@end

使用方法:

导入头文件:


#import "FZEasyFile.h"

判断地址是否已存在


[EasyFile isFileExists:@"my/file/path/info.txt"]

创建


[EasyFile createFile:"my/file/path/info.txt" overwrite:NO];

写入文件中:拼接和覆盖写入


[FZEasyFile writeFile:"my/file/path/info.txt" contents:[@"a" dataUsingEncoding:NSUTF8StringEncoding] append:NO];
[FZEasyFile writeFile:"my/file/path/info.txt" contents:[@"b" dataUsingEncoding:NSUTF8StringEncoding] append:YES];

After these calling the content of the file is "ab".


删除文件


[FZEasyFile removeFile:"my/file/path/info.txt"];
[FZEasyFile removeFile:"my/file/path"];

获取绝对路径(实际存储路径)


NSString *fullName = [EasyFile fullFileName:"my/file/path/info.txt"];

转换

After getting the full name, you can pass it to other API, such as NSInputStream:


NSInputStream *input = [NSInputStream inputStreamWithFileAtPath:fullName];

 

iOS 利用FZEasyFile本地保存 和 常规保存的更多相关文章

  1. ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片

    以下介绍两种方法:1.利用WebRequest,WebResponse 类 WebRequest wreq=WebRequest.Create("http://www.xueit.com/e ...

  2. Ruby1.9.3-下载网络图片至本地,并按编号保存。

    #本程序功能:下载网络图片至本地,并按编号保存. #使用Ruby1.9.3在winxp_sp3下编写. require 'nokogiri' require 'open-uri' #以下 根据网址解析 ...

  3. iOS五种本地缓存数据方式

    iOS五种本地缓存数据方式   iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...

  4. Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面

    Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面 关于欢迎界面 很多App第一次启动都会有一个欢迎界面,欢迎界面往往决定这用户对App的第一映像,所以欢 ...

  5. 详细的图文介绍如何利用XAMPP本地建站的环境配置教程

    原文:详细的图文介绍如何利用XAMPP本地建站的环境配置教程 WordPress 是一个简便快捷,用途广,人气旺的一个开源的博客建站程序.很有很多等您去发现. 简便快捷:在性能上易于操作.易于浏览: ...

  6. UIView封装动画--iOS利用系统提供方法来做关键帧动画

    iOS利用系统提供方法来做关键帧动画 ios7以后才有用. /*关键帧动画 options:UIViewKeyframeAnimationOptions类型 */ [UIView animateKey ...

  7. UIView封装动画--iOS 利用系统提供方法来做弹性运动

    iOS 利用系统提供方法来做弹性运动 /*创建弹性动画 damping:阻尼,范围0-1,阻尼越接近于0,弹性效果越明显 velocity:弹性复位的速度 */ [UIView animateWith ...

  8. iOS利用Application Loader打包提交到App Store时遇到错误The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are:A-Z ,a-z,0-9,dash,period,underscore,but the name cannot start w

    iOS利用Application Loader打包提交到App Store时遇到错误: The filename 未命名.ipa in the package contains an invalid ...

  9. UIView封装动画--iOS利用系统提供方法来做转场动画

    UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...

随机推荐

  1. [转]DOM0,DOM2,DOM3事件处理方式区别

    转 DOM0,DOM2,DOM3事件处理方式区别 2016年07月13日 15:00:29 judyge 阅读数:1457更多 个人分类: js与前端   引子:        文档对象模型是一种与编 ...

  2. Node.js笔记 http fs

    const http=require('http'); const fs=require('fs'); var server = http.createServer(function(req, res ...

  3. VC++的函数指针和回调函数 及友元函数

    什么是函数指针 函数指针是指向函数的指针变量.也就是说,它是一个指针变量,而且该指针指向一个函数. 对于指针变量来说,它的值是它指向的变量的地址.举个例子:指针变量pi是指向一个整型变量i的指针,则变 ...

  4. 自己写的Android图表库XCL-Charts一些旧的样例

    话说有了灵感就要抓住,来了兴趣就要去研究它. 所以尽管近期非常忙.但我还是没有丢下Android图表实现的研究.最终如今我的图表库基类 基本上已经有点模样了.不在是小打小闹,而是能依传入參数非常灵活的 ...

  5. 系统学习java高并发系列一

    转载请注明原创出处,谢谢! JAVA服务端或者后端需要大量的高并发计算,所以高并发在JAVA服务端或者后端编程中显的格外重要了. 首先需要有几个概念: 1.同步和异步 同步异步是来形容方法的一次调用的 ...

  6. WCF REST 基础教程

    概述 Representational State Transfer(REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. 因此REST是设计风格而不是标准,R ...

  7. [Angular2] @Ngrx/store and @Ngrx/effects learning note

    Just sharing the learning experience related to @ngrx/store and @ngrx/effects. In my personal opinio ...

  8. php框架排名(Laravel一直第一)

    php框架排名(Laravel一直第一) 一.总结 1.Laravel,后面就用这个框架(要用好这个框架,英语得6啊) 2.YII框架和tp框架一样,也是一个国产框架 二.2017世界PHP框架排名T ...

  9. 使用Perl批量读取文件最后行

    使用Perl批量读取文件最后行 面对成百上千个文件,有时我们需要查看它的最后行,单个文件打开将耗费大量时间,而通过Perl提取出最后行,将快速的帮助我们处理繁琐的事务. 特性 整个目录完全遍历,自动提 ...

  10. 制作Kinect体感控制小车教程 &lt;一&gt;

    转载请注明出处:http://blog.csdn.net/lxk7280                                        Kinect体感控制小车        Kine ...