IOS开发入门之iOS开发-文件操作
白羽 2018-09-12 来源 :网络 阅读 952 评论 0

摘要:本文将带你了解IOS开发入门之iOS开发-文件操作,希望本文对大家学IOS有所帮助。

        本文将带你了解IOS开发入门之iOS开发-文件操作,希望本文对大家学IOS有所帮助。



                    目录操作和文件管理
 
学习目标
 1.理解单例
 2.掌握NSFileManager类常用的文件管理操
 3.掌握NSFileHandle类常用的文件数据操作
 4.了解NSData类的常用操作
5.掌握Plist文件读写
——————————————————————
通常程序在运行中或者程序结束之后,需要保存一些信息,而且需要持久化存储信息,比如登陆信息、视频播放记录、收藏记录等等,那么我们可以采用以下几种方式对数据进行持久化保存.
 
 1.1单例模式(当前对象有且仅有一个实例)
                 
好处:只有一个实例,数据共享。
                  
 单例模式是一种常用的设计模式。在应用这个模式时,
单例对象的类必须保证只有一个实例存在,而且自行实例化并向整个
系统提供这个实例。如果希望在系统中某个类的对象只能存在一个,
单例模式是最好的解决方案。
 
 其实单例类似C语言中的全局变量
 在整个程序声明周期内,该对象只有一份存在内存中
 可以在多个对象之间共享数据。
 
 
 
 <1>单例创建
 (1)  单例的创建方法通常以default/shared/standard 等等开头
 
 
(2) 单例不需要release 或者 autorelease ,因为单例的生命周期为整个程序。
 
 
2.方法:
 2.1 NSFileManager

<1>创建文件管理器单例对象

 

[NSFileManager defaultManager]

 

<2>遍历目录下的内容

//浅度遍历当前目录下的文件

/*

         contentsOfDirectoryAtPath:要遍历的路径

         error:错误信息

         */

NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];

 

//深度遍历

 array = [fileManger subpathsOfDirectoryAtPath:path error:nil];

 

<3>判断文件是否存在

/*

         判断文件是否存在的时候一定要加后缀。

                      path中如果有后缀表示文件,不加后缀表示文件夹。

         */

        BOOL isExist = [fileManger fileExistsAtPath:path];

        

        if (isExist)

        {

            NSLog(@"存在");

        }

        else

        {

            NSLog(@"不存在");

        }

 

<4>创建文件和目录

//创建文件

  /*

         createFileAtPath:要创建文件的路径

         contents:文件内容(NSData类型)

         attributes:文件属性,一般为nil,nil表示采用默认属性。

         */

        //注意:如果文件已经存在会覆盖

        BOOL createOK = [fileManger createFileAtPath:path contents:nil attributes:nil];

 

 

//创建目录

/*

         createDirectoryAtPath:要创建的目录,如果文件夹已经存在不会覆盖

         withIntermediateDirectories:是否有中间目录

         attributes:文件夹的属性,nil表示默认属性

         error:错误信息

         */

        createOK = [fileManger createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];

 

 

<5>拷贝文件/目录

                  //目录与目录拷贝

        [fileManger copyItemAtPath:fromFilePath toPath:toDirPath error:&error];

 

        //文件与文件拷贝

        [fileManger copyItemAtPath:fromFilePath toPath:toFilePath error:&error];

 

<6>移动文件/目录

        [fileManger moveItemAtPath:frompath toPath:toPath error:nil];

 

<7>删除文件/目录

                    [fileManger removeItemAtPath:toPath error:nil];

 

<8>获取文件属性

       NSDictionary *attributes = [fileManger attributesOfItemAtPath:path error:nil];

       NSLog(@"文件的属性:%@",attributes);

 

 
 
 
2.2 NSData(二进制数据)
<1>把NSString转换为NSData
NSData *data = [string dataUsingEncoding:
NSUTF8StringEncoding]
 
       
<2>把NSData转换为NSString
NSString *convertString = [[NSString alloc] 
initWithData:data encoding:NSUTF8StringEncoding]
 
 
 2.3 NSFileHandle(文件句柄类)
对文件进行读写首先需要NSFileHandle打开文件,
NSFileHandle对文件进行读写都是NSData类型的二进制数据.
 

<1>打开文件方法

//只读的句柄

        NSFileHandle *readOnlyHandle = [NSFileHandle fileHandleForReadingAtPath:path];

        //只写的句柄

        NSFileHandle *writeOnlyHandle  = [NSFileHandle fileHandleForWritingAtPath:path];

        //读写句柄

        NSFileHandle *readAndWriteHandle = [NSFileHandle fileHandleForUpdatingAtPath:path];

           

 

<2>读指定长度的数据(单位为字节)

  //读取5个字节数据

NSData *data = [readOnlyHandle readDataOfLength:5];

                   

 

<3>从当前偏移量读到文件尾

[readOnlyHandle readDataToEndOfFile]

[readAndWriteHandle readDataToEndOfFile]

 

 

<4>设置文件偏移量(单位为字节)

[readOnlyHandle seekToFileOffset:偏移的字节数];

 

 

<5>将文件偏移量定位到文件尾

[readOnlyHandle seekToEndOfFile];

                       

 

<6>写文件(不覆盖的时候需要设置偏移量)

          //1.先把偏移量指到文件尾部

[readAndWriteHandle seekToEndOfFile];

          //2.写入到指定路径

[readAndWriteHandle writeData:[@"abcdef" dataUsingEncoding:NSUTF8StringEncoding]];

          

 

<7>关闭文件句柄

         //关闭文件句柄,关闭后(不需要)就不能再操作文件了

[readAndWriteHandle closeFile];

[readOnlyHandle closeFile];

[writeOnlyHandle closeFile];

 
 
 
 
 
 
 
 
 
 
 3  Plist
 <1> 什么是plist文件, plist文件的作用
      1.plist文件:property list  属性列表文件,文件的内容只能是 NSString,NSNumber,NSDate,NSData,NSArray,NSDictionary类的对象内容,不能保存其他类型数据
 
  2.作用:对一些登陆注册信息或者程序的配置信息(小数据)进行持久化存储
 
 <2> 如何创建plist文件, 如何编辑plist文件
 Plist文件内容的格式是XML语法格式
 
 1.Xcode创建
 1.点击右键—>New File 弹出一对话框
 2.iOS程序选中iOS栏中的Resource或者Mac程序选中OS X 栏中的resource 
 3.点击Resource中的Property List 创建plist文件
 4.点击文件中的'+'可以添加数据
 
 2.代码创建
 如果要把 NSString NSNumber NSDate NSData NSArray NSDictionary  的对象写入文件一般就用plist文件  
 我们需要这些数据保存到一个数组或者字典中,然后调用数组和字典的相关函数把数 组NSArray或者字典NSDictionary写入plist文件
 //NSArray和NSDictionary写文件方法
 - (BOOL)writeToFile:(NSString *)path atomically:
 (BOOL)useAuxiliaryFile;
 
 <3> 如何在程序中读取plist文件数据
 Plist文件的根节点(数据的最外层)通常是数组或者字典
 如果Plist文件的根节点是字典那么使用字典的类方法
 + (id)dictionaryWithContentsOfFile:(NSString *)path;
 读写Plist文件
 如果根节点是数组那么使用数组的类方法
 + (id)arrayWithContentsOfFile:(NSString *)path;
 读取Plist文件。
 注:上述两个方法只能读取Plist文件,不能读取其他格式的文件。
 










本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之ios频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程