一般情况下,浅谈iOS的文件操作

  一般情况下,浅谈iOS的文件操作
  沙盒主路径:是程序运行期间系统会生成一个专属的沙盒路径,应用程序在使用期间非代码的文件都存储在当前的文件夹路径里面

NSArray *array = ; NSString *docuPath =;,iOS常见的数据持久化的方式 主要有以下几点:

  沙盒主路径:是程序运行期间系统会生成一个专属的沙盒路径,应用程序在使用期间非代码的文件都存储在当前的文件夹路径里面
  我们通过以下代码可以打印出沙盒主路径
  
NSString *homePath =NSHomeDirectory; NSLog;
  我们根据打印出的路径前往文件夹可以进入包含 Documents Library 和 tmp文件夹的文件夹 这个就是沙盒主路径
  Documents:用来存储永久性的数据的文件 程序运行时所需要的必要的文件都存储在这里itunes会自动备份这里面的文件
  Library:用于保存程序运行期间生成的文件
  Caches:文件夹用于保存程序运行期间产生的缓存文件
  Preferences:主要是保存一些用户偏好设置的信息,一般情况下,我们不直接打开这个文件夹 而是通过NSUserDefaults进行偏好设置的存储
  tmp:临时文件夹---程序运行期间产生的临时岁骗会保存在这个文件夹中 通常文件下载完之后或者程序退出的灰自动清空此文件夹itunes不会备份这里的数据。 ~~~~tips: 由于系统会清空此文件夹所以下载或者其他临时文件若需要持久化请及时移走
  
//第一个参数:要查询的文件的路径 //第二个参数:要查询路径所属的用户 iOS是单用户 //第三个参数的意思 YES是绝对路径 NO是相对路径 //区别于OS-X系统 iOS应用文件夹中通常只有一个文件路径 由于OC同时支持的苹果系列产品的开发 在MacOS里面会同时存在很多软件 通常生成的路径放在一个数组里面 //iOS端一次只有一个应用 所以取数组唯一的一个元素即可 NSArray *documentArray = NSSearchPathForDirectoriesInDomains; NSLog;//打印的结果是 "~/Documents" NSString *documentPath = ; NSLog;//结果是 ~/Documents 对比以上我们可以打印试着获取几个路径 NSString *libraryPath = ; NSLog; NSString *cachesPath = ; NSLog; NSString *preferencePath =; NSLog;
  另外 在这里值得我们注意的一点是:.app的路径 iOS 8 之前bundle和tmp等文件统一放在主路径下---iOS 8 之后boundle放在了container文件夹的下面
  
//准备字符串 NSString *string  = @"I love my iOS teacher"; //2 准备路径 NSString *path =NSHomeDirectory;
  path = ; //3 写入文件 //第一个参数 路径 //第二个参数 是否进行线性操作 //第三个参数 编码方式 //第四个参数 错误对象 ;
  
NSString *contentString = ; NSLog;
  
NSArray *array = ; NSString *docuPath =;
  docuPath =; //写入文件 ; NSLog; //取出文件 NSArray *array1 = ; NSLog;
  
NSDictionary *dict = ; NSString *prefePath =;
  
UIImage *image =; NSString *homePath =NSHomeDirectory;
  homePath = ; NSData *data = UIImageJPEGRepresentation;
  ; //读取图片 UIImageView *aImageView = initWithFrame:.bounds];
  简单对象可以通过writeTofile写入对象 但是复杂对象没有writeToFile的方法写入文档,所以我们需要借助归档和反归档,将复杂对象转化成简单对象,写入文档
  首先, 我们x-code新建一个类 SingleVip 继承与NSObject 遵守 NSCoding协议
  
.h #import <Foundation/> @interface SingleVip : NSObject<NSCoding> @propertyNSString *name; @propertyNSString *assets;//资产 @propertyNSString *car; @propertyint age; @#import "" //定义成宏 方便下面使用 也可以减少出错 #define kName @"name" #define kAssets @"assets" #define kCar @"car" #define kAge @"age" @implementation SingleVip #pragma mark---NSCoding必须实现的两个----- //编码 这个方法就是将对象转化成data的时候会执行的 - encodeWithCoder:aCoder{
  } //反编码 - initWithCoder:aDecoder{ if {
  在以上基础上 我们创建一个SingleVip类的实例变量 进行归档和反归档的操作 直接上代码吧、、、往下看
  
SuperMan *man =;
  
一般情况下,浅谈iOS的文件操作
  = @"穷类屌蛋精光"; // //准备路径 NSString *homePath =NSHomeDirectory;
  homePath = ; // //创建数据对象 用来存放vip对象 NSMutableData *data =; // //创建归档对象 NSKeyedArchiver *archiver = initForWritingWithMutableData:data]; // //开始归档 ; // //完成归档 ; // //写入文件 ; //反归档 //将文件里面的data对象读取出来 NSData *_data = ; //创建反归档对象 NSKeyedUnarchiver *unArchiver =initForReadingWithData:_data];
  在这里有一点是需要我们区分的,归档并不是数据持久化的方式 而是辅助复杂对象转化成简单对象的一种方式 其实真正实现数据持久化的仍然是写入文件writeToFile
  iOS常见的数据持久化的方式 主要有以下几点:
  // NSUserDefaults 偏好设置 单例
  
#define K_IMG @" __weak typeoftemp = self; NSURLSessionDownloadTask *downLoadTask = downloadTaskWithURL:pletionHandler:^ { //data对象 NSData *data = ; //创建文件管理者对象 NSFileManager *fileManeger = ; //文件夹路径操作 NSString *homePath = NSHomeDirectory;
  UIImageView *aImageView = initWithFrame:.bounds];
  */ //这里以删除文件为例 BOOL res=; if { NSLog;
  
文/刘高见 原文链接:
  沙盒主路径:是程序运行期间系统会生成一个专属的沙盒路径,应用程序在使用期间非代码的文件都存储在当前的文件夹路径里面
//准备字符串 NSString *string  = @"I love my iOS teacher"; //2 准备路径 NSString *path =NSHomeDirectory;,} //反编码 - initWithCoder:aDecoder{ if  {,
SuperMan *man =;。

发表评论

电子邮件地址不会被公开。 必填项已用*标注