一、主要路径:

Library/Caches/
此文件用于存储那些需要及可延迟或重创建的临时数据.且这些内容不会被IOS 系统
备份,特别地,当设备磁盘空间不足且应用不在运行状态时,IOS 系统可能会移除此文件
夹中的内容!所以,不要让你的应用太依赖此文件夹中的内容;

tmp/
此文件夹包含应用创建,下载等产生的临时文件.IOS系统不会备份此文件夹中的内容。

二、获取路径的方法:

NSFileManager *fileManager = [[NSFileManager alloc] init];
NSArray *urls = [fileManager URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask];

URLsForDirectory可以取下面几个值:
  NSLibraryDirectory
  标记应用的library文件夹.
  NSCachesDirectory
  标记caches文件夹,在之前解释说明过.
  NSDocumentDirectory
  标记document文件夹.
inDomains取值:
  NSUserDomainMask
标记对文件夹路径的搜索在当前用户文件夹下进行.

获取tmp的方式有所不同:

  1. NSString *tempDirectory = NSTemporaryDirectory();

拼接路径:

  1. NSString *filePath = [paramPath stringByAppendingPathComponent:fileName];

三、写文件的方法:

1.部分类有简单的保存方法,例如NSString,UIImage及NSData,NSArray,NSDictionary

  1. writeToURL:atomically:encoding:error:
  1. BOOL succeeded = [someText writeToFile:destinationPath atomically:YES encoding:NSUTF8StringEncoding error:&error];

函数说明:

writeToFile
字符串类型的文件存储路径(上面函数使用URL类型的参数).
atomically
一个Boolean值,如果设置为YES,则文件首先会被存储到一个临时空间,然
后此临时文件才会被移到你所设定的目标路径.这样可以确保文件内容被存储
到目标路径之前会首先被存储到磁盘某处,此时,即使IOS系统在文件被移到
最终的目标路径前崩溃,你的数据内容在操作系统稍后恢复时仍将得到保存.
,推荐设置此值为YES,以确保你在保存数据时不因应用运行异常情况导致数
据丢失.
encoding
要保存到目标路径的文本字符编码.一般使用NSUTF8StringEncoding.

2.创建和文件的文件夹的方法:

文件夹:使用类NSFileManager的实例方法

  1. createDirectoryAtPath:withIntermediateDirectories:attributes:error:

withIntermediateDirectorys
一个Boolean值,如果设置为YES,则在创建最深层文件前,将会创建所有的父
文件夹。

attributes
一个传递给系统可以影响文件夹将如何创建的属性字典.如文件夹修改日期及时
间,创建日期及时间及其希望修改的属性.

文件:

  1. createFileAtPath:contents:attributes

3.枚举文件夹:

使用类NSFileManager实例方法来枚举文件夹下所有的文件,文件夹及符号链接.

  1. contentsOfDirectoryAtPath:error:

为了从文件管理器对象获得更细粒度的文件信息,调用

  1. contentsOfDirectoryAtURL:includingPropertiesForKeys:opinions:error:

contentsOfDirectoryAtURL
准备遍历的文件夹路径.此路径需要传递为一个NSURL实例
includingPropertiesForKeys
传递一个你希望IOS系统为在目标文件夹下遍历到的文件,文件夹或其他项目返
回的属性数组值.参数的列表:
NSURLIsDirectoryKey
稍后允许你判断遍历到的URL所指对象是否是目录.
NSURLIsReadableKey
稍后允许你判断遍历到的URL所指项目对你的应用是否可读.
NSURLCreateionDateKey
返回遍历到项目的创建日期.
NSURLContentAccessDateKey
返回遍历到项目内容的最后存取日期.
NSURLContentModificationDateKey
如同参数名所表示的,此参数允许你判断遍历返回的URL所指项目的最后
修改时间.
options
此参数只允许0或NSDirectoryEnumerationSkipHiddenFiles值传入.如果传入的
后面这个参数,所有文件在枚举时将被忽略.

例如遍历得到URL后可以使用下面方法获取文件创建时间:

  1. - (NSDate *) dateOfType:(NSString *)paramType inURL:(NSURL *)paramURL{
  2. NSDate *result = nil;
  3. NSError *error = nil;
  4. [paramURL getResourceValue:&result
  5. forKey:paramType
  6. error:&error];
  7. if (error != nil){
  8. NSLog(@"Failed to get property of URL. Error = %@", error);
  9. }
  10. return result;
  11. }
  1. NSLog(@"Creation Date = %@",
  2. [self dateOfType:NSURLCreationDateKey inURL:paramURL]);

4.删除文件或文件夹:

使用NSFileManager类的实例方法removeItemAtPath:error:或removeItemAtURL.前一
个方法传递一个字符串类型的路径,后一个传递一个URL指向的路径。

5.文件句柄FileHandle :

fileHandleForUpdatingAtPath:
打开文件并获得读写权限,此将把文件指针放在文件的起始处.
fileHandleForReadingAtPath:
打开文件并只具有读取权限.
fileHandleForWritingAtPath:
打开文件并只具有写权限.

对NSFileManger的补充:

readDataOfLength:
返回一个NSData对象,包含从文件读取到的n字节.
writeData:
把指定的NSData对象写到文件.

6.普通的Object保存:

首先Object的属性要是基本属性或是实现了NSCoding协议的属性,其次Object本身也要实现NSCoding

NSKeyedArchiver
一个利用键值来归档或存储对象或对象树的类.很像一个字典.
NSKeyedUnarchiver
此类进行与归档类相反的操作.

例子:

  1. #import "Person.h"
  2. NSString *const kFirstNameKey = @"FirstNameKey";
  3. NSString *const kLastNameKey = @"LastNameKey";
  4. @implementation Person
  5. - (void)encodeWithCoder:(NSCoder *)aCoder{
  6. [aCoder encodeObject:self.firstName forKey:kFirstNameKey];
  7. [aCoder encodeObject:self.lastName forKey:kLastNameKey];
  8. }
  9. - (id)initWithCoder:(NSCoder *)aDecoder{
  10. self = [super init];
  11. if (self != nil){
  12. _firstName = [aDecoder decodeObjectForKey:kFirstNameKey];
  13. _lastName = [aDecoder decodeObjectForKey:kLastNameKey];
  14. }
  15. return self;
  16. }
  17. @end
  1. Person *steveJobs = [[Person alloc] init];
  2. steveJobs.firstName = kFirstName;
  3. steveJobs.lastName = kLastName;
  4. /* Archive the object to the file */
  5. [NSKeyedArchiver archiveRootObject:steveJobs toFile:filePath];
  6. /* Now unarchive the same class into another object */
  7. Person *cloneOfSteveJobs =
  8. [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

其实此工作完全可以将对象序列化成Json字符串存储,然后读出后进行反序列化还原成原数据。

四、读文件方法:

  1. - (NSString *) readTextFromPath:(NSString *)paramPath

ios 存储学习笔记的更多相关文章

  1. iOS音频学习笔记二:iOS SDK中与音频有关的相关框架

      上层:       Media Player Framework: 包含MPMoviePlayerController.MPMoviePlayerViewController.MPMusicPla ...

  2. iOS音频学习笔记一:常见音频封装格式及编码格式

    (1) pcm格式    pcm是经过话筒录音后直接得到的未经压缩的数据流    数据大小=采样频率*采样位数*声道*秒数/8     采样频率一般是22k或者44k,位数一般是8位或者16位,声道一 ...

  3. iOS开发学习笔记

    1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...

  4. Web客户端数据存储学习笔记——Cookie

    今天对登录访问的安全以及web客户端存储做了一些大致的学习,决定在这方面加深理解,记录在博客里.第一个接触到的是Cookie... WHAT? WHY? HOW? 在学习cookie的使用时发现其名称 ...

  5. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  6. ios开发学习笔记(1)

    objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...

  7. IOS开发学习笔记016-Foundation框架

     Foundation 框架的学习 一.Foundation 常用结构体 1.NSRange(location,length)  typedef struct _NSRange { NSUIntege ...

  8. iOS - CAEmitterLayer 学习笔记一

    其他参考博客: http://my.oschina.net/u/2340880/blog/485095 http://www.cnblogs.com/YouXianMing/p/3785876.htm ...

  9. ios开发学习笔记(这里一定有你想要的东西,全部免费)

    1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [ ...

随机推荐

  1. Part 7 Joins in sql server

    Joins in sql server Advanced or intelligent joins in sql server Self join in sql server Different wa ...

  2. 64位系统下注册32位dll文件

    64位系统下注册32位dll文件 在64位系统里注册32位软件所需的一些dll会提示不兼容,大概因为32 位进程不能加载64位Dll,64位进程也不可以加载32的导致. 若要支持的32 位和64 位C ...

  3. iOS 高阶

    1.UIStoryBoard 2. segue跳转传值 3. UIColor配色 //1. 十进制配色 [UIColor colorWithRed:163.0/255.0 green:148.0/25 ...

  4. JavaScript学习笔记 - 进阶篇(2)- 数组

    什么是数组 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果需要存储更多数据,那就会变的更麻烦.我们用数组 ...

  5. ODBC,实现图片循环写入Oracle数据库

    import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import jav ...

  6. 配置FTP服务

    配置FTP服务 1.安装FTP服务器(默认已安装) 服 务:vsftpd 位 置:光盘1 软 件:vftpd-2.0.1-5.i386.rpm 配 置:/etc/vsftpd/vsftpd.conf ...

  7. Flex设置外部浏览器

    Flex Builder默认的外围浏览器是微软 Internet Explorer. 如果想改成Firefox,步骤如下: Window>Preferences>General>We ...

  8. Codevs 1371 浴火银河跑运输

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold  题目描述 Description: 小 K 又在玩浴火银河了...不过这次他的目的真的是跑运输赚钱... 他想知 ...

  9. mplayer-for-windows change color scheme in win 7

    Q: When I play movie on Windows7, always comes this message: The color scheme has been changed The f ...

  10. 不同浏览器的DNS超时重发机制(一)

    一.Chrome浏览器(37.0.2062.124 m) 1.在Win7环境下,DNS超时重发的时间间隔为:2s.2s.2s.2s(在这个时刻重复发2个DNS请求).2s.4s,再经过大约14s左右, ...