iOS 利用FZEasyFile本地保存 和 常规保存
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本地保存 和 常规保存的更多相关文章
- ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片
以下介绍两种方法:1.利用WebRequest,WebResponse 类 WebRequest wreq=WebRequest.Create("http://www.xueit.com/e ...
- Ruby1.9.3-下载网络图片至本地,并按编号保存。
#本程序功能:下载网络图片至本地,并按编号保存. #使用Ruby1.9.3在winxp_sp3下编写. require 'nokogiri' require 'open-uri' #以下 根据网址解析 ...
- iOS五种本地缓存数据方式
iOS五种本地缓存数据方式 iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...
- Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面
Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面 关于欢迎界面 很多App第一次启动都会有一个欢迎界面,欢迎界面往往决定这用户对App的第一映像,所以欢 ...
- 详细的图文介绍如何利用XAMPP本地建站的环境配置教程
原文:详细的图文介绍如何利用XAMPP本地建站的环境配置教程 WordPress 是一个简便快捷,用途广,人气旺的一个开源的博客建站程序.很有很多等您去发现. 简便快捷:在性能上易于操作.易于浏览: ...
- UIView封装动画--iOS利用系统提供方法来做关键帧动画
iOS利用系统提供方法来做关键帧动画 ios7以后才有用. /*关键帧动画 options:UIViewKeyframeAnimationOptions类型 */ [UIView animateKey ...
- UIView封装动画--iOS 利用系统提供方法来做弹性运动
iOS 利用系统提供方法来做弹性运动 /*创建弹性动画 damping:阻尼,范围0-1,阻尼越接近于0,弹性效果越明显 velocity:弹性复位的速度 */ [UIView animateWith ...
- 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 ...
- UIView封装动画--iOS利用系统提供方法来做转场动画
UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...
随机推荐
- spring使用context:property-placeholder载不进属性问题 wangbiglei 发表于1年前 原 spring使用context:property-placeholder载不进属性问题
https://my.oschina.net/wangbiglei/blog/489583 http://www.cnblogs.com/leftthen/p/5615066.html
- BingMap频繁Add Pushpin和Delete Pushpin会导致内存泄露
近期在做性能測试的时候发现BingMap内存泄露(memory leak)的问题,查找了一些国外的帖子,发现也有类似的问题,可是没有好的解决的方法. https://social.msdn.micro ...
- java set转list,数组与list的转换
读zookeeper的源码(zookeeper.java)时发现的,平时没有怎么注意: private final ZKWatchManager watchManager; List<Strin ...
- springmvc hibernate整合
今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多 了,Spring-Security的就留在下一篇吧,这篇主 ...
- Android 中AIDL的使用与理解
AIDL的使用: 最常见的aidl的使用就是Service的跨进程通信了,那么我们就写一个Activity和Service的跨进程通信吧. 首先,我们就在AS里面新建一个aidl文件(ps:现在AS建 ...
- Makefile中支持的函数大全
一.描述 Makefile的函数调用,很像变量的使用,也是以"$"来标识的,其语法如下: $(<function> <arguments> ) 或是 ${& ...
- 【Codeforces Round #437 (Div. 2) A】Between the Offices
[链接]h在这里写链接 [题意] 在这里写题意 [题解] 在这里写题解 [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h> using n ...
- 使用boost::property_tree生成带attribute的xml
曾经写过一篇"使用Boost property tree来解析带attribute的xml", 但是还有姐妹篇一直没贴.看看前一篇贴了都快都快3年了,时间过的真快. 这一小篇就算是 ...
- swift开发网络篇 - 网络基础
GET & POST GET GET的语义是获取指定URL的资源 将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用"?"连接 ...
- 7、UTF-8, Unicode, GB2312格式串转换之C语言版
(申明:此文章属于原创,若转载请表明作者和原处链接 ) /* author: wu.jian (吴剑) English name: Sword ...