ios 存储学习笔记
一、主要路径:
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的方式有所不同:
- NSString *tempDirectory = NSTemporaryDirectory();
拼接路径:
- NSString *filePath = [paramPath stringByAppendingPathComponent:fileName];
三、写文件的方法:
1.部分类有简单的保存方法,例如NSString,UIImage及NSData,NSArray,NSDictionary
- writeToURL:atomically:encoding:error:
- BOOL succeeded = [someText writeToFile:destinationPath atomically:YES encoding:NSUTF8StringEncoding error:&error];
函数说明:
writeToFile
字符串类型的文件存储路径(上面函数使用URL类型的参数).
atomically
一个Boolean值,如果设置为YES,则文件首先会被存储到一个临时空间,然
后此临时文件才会被移到你所设定的目标路径.这样可以确保文件内容被存储
到目标路径之前会首先被存储到磁盘某处,此时,即使IOS系统在文件被移到
最终的目标路径前崩溃,你的数据内容在操作系统稍后恢复时仍将得到保存.
,推荐设置此值为YES,以确保你在保存数据时不因应用运行异常情况导致数
据丢失.
encoding
要保存到目标路径的文本字符编码.一般使用NSUTF8StringEncoding.
2.创建和文件的文件夹的方法:
文件夹:使用类NSFileManager的实例方法
- createDirectoryAtPath:withIntermediateDirectories:attributes:error:
withIntermediateDirectorys
一个Boolean值,如果设置为YES,则在创建最深层文件前,将会创建所有的父
文件夹。
attributes
一个传递给系统可以影响文件夹将如何创建的属性字典.如文件夹修改日期及时
间,创建日期及时间及其希望修改的属性.
文件:
- createFileAtPath:contents:attributes
3.枚举文件夹:
使用类NSFileManager实例方法来枚举文件夹下所有的文件,文件夹及符号链接.
- contentsOfDirectoryAtPath:error:
为了从文件管理器对象获得更细粒度的文件信息,调用
- contentsOfDirectoryAtURL:includingPropertiesForKeys:opinions:error:
contentsOfDirectoryAtURL
准备遍历的文件夹路径.此路径需要传递为一个NSURL实例
includingPropertiesForKeys
传递一个你希望IOS系统为在目标文件夹下遍历到的文件,文件夹或其他项目返
回的属性数组值.参数的列表:
NSURLIsDirectoryKey
稍后允许你判断遍历到的URL所指对象是否是目录.
NSURLIsReadableKey
稍后允许你判断遍历到的URL所指项目对你的应用是否可读.
NSURLCreateionDateKey
返回遍历到项目的创建日期.
NSURLContentAccessDateKey
返回遍历到项目内容的最后存取日期.
NSURLContentModificationDateKey
如同参数名所表示的,此参数允许你判断遍历返回的URL所指项目的最后
修改时间.
options
此参数只允许0或NSDirectoryEnumerationSkipHiddenFiles值传入.如果传入的
后面这个参数,所有文件在枚举时将被忽略.
例如遍历得到URL后可以使用下面方法获取文件创建时间:
- - (NSDate *) dateOfType:(NSString *)paramType inURL:(NSURL *)paramURL{
- NSDate *result = nil;
- NSError *error = nil;
- [paramURL getResourceValue:&result
- forKey:paramType
- error:&error];
- if (error != nil){
- NSLog(@"Failed to get property of URL. Error = %@", error);
- }
- return result;
- }
- NSLog(@"Creation Date = %@",
- [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
此类进行与归档类相反的操作.
例子:
- #import "Person.h"
- NSString *const kFirstNameKey = @"FirstNameKey";
- NSString *const kLastNameKey = @"LastNameKey";
- @implementation Person
- - (void)encodeWithCoder:(NSCoder *)aCoder{
- [aCoder encodeObject:self.firstName forKey:kFirstNameKey];
- [aCoder encodeObject:self.lastName forKey:kLastNameKey];
- }
- - (id)initWithCoder:(NSCoder *)aDecoder{
- self = [super init];
- if (self != nil){
- _firstName = [aDecoder decodeObjectForKey:kFirstNameKey];
- _lastName = [aDecoder decodeObjectForKey:kLastNameKey];
- }
- return self;
- }
- @end
- Person *steveJobs = [[Person alloc] init];
- steveJobs.firstName = kFirstName;
- steveJobs.lastName = kLastName;
- /* Archive the object to the file */
- [NSKeyedArchiver archiveRootObject:steveJobs toFile:filePath];
- /* Now unarchive the same class into another object */
- Person *cloneOfSteveJobs =
- [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
其实此工作完全可以将对象序列化成Json字符串存储,然后读出后进行反序列化还原成原数据。
四、读文件方法:
- - (NSString *) readTextFromPath:(NSString *)paramPath
ios 存储学习笔记的更多相关文章
- iOS音频学习笔记二:iOS SDK中与音频有关的相关框架
上层: Media Player Framework: 包含MPMoviePlayerController.MPMoviePlayerViewController.MPMusicPla ...
- iOS音频学习笔记一:常见音频封装格式及编码格式
(1) pcm格式 pcm是经过话筒录音后直接得到的未经压缩的数据流 数据大小=采样频率*采样位数*声道*秒数/8 采样频率一般是22k或者44k,位数一般是8位或者16位,声道一 ...
- iOS开发学习笔记
1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...
- Web客户端数据存储学习笔记——Cookie
今天对登录访问的安全以及web客户端存储做了一些大致的学习,决定在这方面加深理解,记录在博客里.第一个接触到的是Cookie... WHAT? WHY? HOW? 在学习cookie的使用时发现其名称 ...
- iOS开发学习笔记:基础篇
iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...
- ios开发学习笔记(1)
objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...
- IOS开发学习笔记016-Foundation框架
Foundation 框架的学习 一.Foundation 常用结构体 1.NSRange(location,length) typedef struct _NSRange { NSUIntege ...
- iOS - CAEmitterLayer 学习笔记一
其他参考博客: http://my.oschina.net/u/2340880/blog/485095 http://www.cnblogs.com/YouXianMing/p/3785876.htm ...
- ios开发学习笔记(这里一定有你想要的东西,全部免费)
1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [ ...
随机推荐
- Part 7 Joins in sql server
Joins in sql server Advanced or intelligent joins in sql server Self join in sql server Different wa ...
- 64位系统下注册32位dll文件
64位系统下注册32位dll文件 在64位系统里注册32位软件所需的一些dll会提示不兼容,大概因为32 位进程不能加载64位Dll,64位进程也不可以加载32的导致. 若要支持的32 位和64 位C ...
- iOS 高阶
1.UIStoryBoard 2. segue跳转传值 3. UIColor配色 //1. 十进制配色 [UIColor colorWithRed:163.0/255.0 green:148.0/25 ...
- JavaScript学习笔记 - 进阶篇(2)- 数组
什么是数组 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果需要存储更多数据,那就会变的更麻烦.我们用数组 ...
- ODBC,实现图片循环写入Oracle数据库
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import jav ...
- 配置FTP服务
配置FTP服务 1.安装FTP服务器(默认已安装) 服 务:vsftpd 位 置:光盘1 软 件:vftpd-2.0.1-5.i386.rpm 配 置:/etc/vsftpd/vsftpd.conf ...
- Flex设置外部浏览器
Flex Builder默认的外围浏览器是微软 Internet Explorer. 如果想改成Firefox,步骤如下: Window>Preferences>General>We ...
- Codevs 1371 浴火银河跑运输
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description: 小 K 又在玩浴火银河了...不过这次他的目的真的是跑运输赚钱... 他想知 ...
- 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 ...
- 不同浏览器的DNS超时重发机制(一)
一.Chrome浏览器(37.0.2062.124 m) 1.在Win7环境下,DNS超时重发的时间间隔为:2s.2s.2s.2s(在这个时刻重复发2个DNS请求).2s.4s,再经过大约14s左右, ...