iOS阶段学习第17天笔记(NSFileManager-NSFileHandle-文件操作)
iOS学习(OC语言)知识点整理
一、单例模式
1)单例是一种编程思想,一个设计模式,与语言无关在采用了单例对象的应用程序中,需要单例类自行提供实例化单例对象,
不管实例化单例对象多少次,只有一个对象存在,这个对象是全局的,能够被整个应用程序共享,访问
2)使用单例模式时使用类提供的类方法获取单例对象,尽量不要用alloc init的方法获取单例对象
3)单例类提供类方法获取单例对象时类方法一般以sharedXX/standedXX/defaultXX开头
实例代码:
#import "Plane.h"
static Plane *plane=nil;//定义一个静态的全局变量
@implementation Plane
//获取单例对象的方法
+(Plane *)sharedPalne
{
//解决数据同步(当一个线程访问时,其他的线程不能操作
@synchronized(self){
if(plane==nil){
plane=[[Plane alloc]init];
}
}
return plane;
} //当调用alloc方法时会执行此方法
+(id)allocWithZone:(struct _NSZone *)zone
{
NSLog(@"%@",NSStringFromSelector(_cmd));
if(plane==nil){
plane=[super allocWithZone:zone];
}
return plane;
}
@end
二、NSFileManager 文件/文件夹 的操作
1)NSFileManager 用于对文件或目录(文件夹)管理的单例类。
2)文件管理类的实例化方法 例如:
NSFileManager *fm=[NSFileManager defaultManager];
3)fileExistsAtPath 用于判断文件是否存在 例如:
BOOL ret=[fm fileExistsAtPath:@"/Users/kingkong/Desktop/Test/test.txt"];
4)createFileAtPath 用于创建文件 第一个参数是文件名,第二个参数是文件的初始值,第三个参数是文件的属性 例如:
BOOL ret=[fm createFileAtPath:@"/Users/kingkong/Desktop/Test/test.txt" contents:nil attributes:nil];
5)copyItemAtPath 用于复制文件:将某一个文件复制成另一个文件,第三个参数:回调错误信息 例如:
NSError *error=nil;//用于接收错误信息
NSString *curpath=@"/Users/kingkong/Desktop/Test/test.txt”;
5 NSString *topath=@"/Users/kingkong/Desktop/Test/test2.txt”;
ret=[fm copyItemAtPath: curpath toPath: topath error:&error];
if(error!=nil){
NSLog(@"error:%@",[error userInfo]);
}
6)moveItemAtPath 用于移动/重命名文件;将某个路径下的文件移动到另一个路径下的文件(目标路径一定要指定文件名),
如果源路径与目 标路径下的文件名不同,同时重命名 例如:
NSString *curpath=@"/Users/kingkong/Desktop/Test/test.txt”; NSString *topath=@"/Users/kingkong/Desktop/Test/test2.txt”; [fm moveItemAtPath: curpath toPath: topath error:nil];
7)attributesOfItemAtPath 获取文件的属性 例如:
NSString *curpath=@"/Users/kingkong/Desktop/Test/test.txt"; NSDictionary *dict= [fm attributesOfItemAtPath: curpath error:nil]; //获取属性字典中该文件的大小 NSLog(@"size:%@",[dict objectForKey:NSFileSize]);
8)removeItemAtPath 用于删除指定路径下的文件 例如:
NSString *path=@"/Users/kingkong/Desktop/Test/test.txt”; BOOL ret=[fm removeItemAtPath: path error:nil];
9)NSData:当对文件操作(写数据到文件和从文件中读数据)和从网络上获取数据,需要将数据转换为纯粹的二进制形式,
NSData就是二进制形式的缓存对象,相当于C中的char buf[255] 例如:
NSString *path=@"/Users/kingkong/Desktop/Test/test.txt”; NSData *content=[fm contentsAtPath: path];
10)NSData数据转换为NSString类型数据 例如:
//NSData---->NSString,将NSData对象转换为字符串 NSString *scontent=[[NSString alloc]initWithData:content encoding:NSUTF8StringEncoding];
11)NSString类型的数据转换为NSData数据 例如:
NSString *str=@"hello China!"; //NSString---->NSData;将字符串转换为NSData数据(写入文件或传输到网络上) NSData *data2=[str dataUsingEncoding:NSUTF8StringEncoding];
12)createFileAtPath … contents 建文件并指定写入内容 例如:
NSString *path=@"/Users/kingkong/Desktop/Test/test.txt”; [fm createFileAtPath:path contents:data2 attributes:nil];
13)fileExistsAtPath… isDirectory 判断目录是否存在(在文件/目录存在的情况下,通过第二个参数获取是否是目录/文件) 例如:
BOOL isDir;//可能结果有:-1,0,1 NSString *path=@"/Users/kingkong/Desktop/Test/test.txt”; BOOL ret=[fm fileExistsAtPath:path isDirectory:&isDir];
14)contentsOfDirectoryAtPath 浅遍历:获取目录下的子目录和文件名 例如:
NSString *path=@"/Users/kingkong/Desktop/Test”; NSArray *array=[fm contentsOfDirectoryAtPath: path error:nil]; NSLog(@"array%@",array);
15)subpathsAtPath 深遍历:获取目录下所有的内容(包括子目录下的所有的内容) 例如:
NSString *path=@"/Users/kingkong/Desktop/Test”; NSArray *array2=[fm subpathsAtPath:path]; NSLog(@"array2:%@",array2);
16)currentDirectoryPath 获取当前应用程序所在目录 例如:
NSString* currentPath=[fm currentDirectoryPath]; NSLog(@"%@",currentPath);
17)createDirectoryAtPath… withIntermediateDirectories 创建目录,第一个参数是目录名,第二个参数是
当目录不存在时是否需要创建其上一级不存在的目录(中间目录)
NSString *path=@"/Users/kingkong/Desktop/Test/File”; BOOL ret=[fm createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
三、NSFileHandle 对文件进行读写操作
1)fileHandleForReadingAtPath 创建一个只读文件的对象(句柄) 例如:
NSString *path=@"/Users/kingkong/Desktop/Test/test.txt”; NSFileHandle *readHandle=[NSFileHandle fileHandleForReadingAtPath: path];
2)readDataOfLength 读取文件中指定长度的内容 例如:
NSData *data=[readHandle readDataOfLength:]; NSString *sdata=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",sdata);
3)readDataToEndOfFile 从当前位置读取内容到文件结束 例如:
data=[readHandle readDataToEndOfFile]; sdata=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",sdata); [readHandle closeFile];//读取文件内容结束(注意如果上次读取过没关闭再次读取时会从上次读取结束位置开始读取)
4)fileHandleForWritingAtPath 创建一个只写文件的对象 例如:
NSFileHandle *writeHandle=[NSFileHandle fileHandleForWritingAtPath:path"]; NSString *s1=@"hello"; //seekToEndOfFile 将对象指针移到文件末尾(实现追加内容) [writeHandle seekToEndOfFile]; [writeHandle writeData:[s1 dataUsingEncoding:NSUTF8StringEncoding]]; //synchronizeFile将数据同步写入文件中 [writeHandle synchronizeFile]; [writeHandle closeFile];//表明操作结束
5)truncateFileAtOffset 从指定位置字符开始截断文件内容,保留多少个字符,设置为0,再写入相当于清空重写 例如:
[writeHandle truncateFileAtOffset:];
6)seekToFileOffset 从指定位置字符开始写入文件,覆盖部分内容 例如:
[writeHandle seekToFileOffset:];
四、关于Path (文件路径)的操作
1)pathComponents 获取路径的各部分 例如:
NSString *path=@"/Users/kingkong/Desktop/Test/text.txt”; NSArray *array1= [path pathComponents]; NSLog(@"array1:%@",array1);
2)pathExtension 获取文件后缀名 例如:
NSLog(@"%@",[path pathExtension]);//结果:txt
3)isAbsolutePath 判断是否是绝对路径:以/开头的路径 例如:
NSLog(@"%d",[path isAbsolutePath]);//结果:1
4)lastPathComponent 获取路径的最后一部分 例如:
NSLog(@"last:%@",path.lastPathComponent);//结果:text.txt
5)stringByAppendingPathComponent 在一个路径后添加另一个路径 例如:
NSLog(@"%@",[path stringByAppendingPathComponent:@"files”]); //结果:/Users/kingkong/Desktop/Test/text.txt/files
6)stringByAppendingPathExtension 为路径添加扩展名 例如:
NSLog(@"%@",[path stringByAppendingPathExtension:@"m"]); //结果:/Users/kingkong/Desktop/Test/text.txt.m
iOS阶段学习第17天笔记(NSFileManager-NSFileHandle-文件操作)的更多相关文章
- iOS 阶段学习第11天笔记(OC基础知识)
iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import 用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...
- iOS 阶段学习第七天笔记(函数、递归)
iOS学习(C语言)知识点整理笔记 一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1 形参名1,形参类型2 形参名2 ...
- iOS阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- iOS 阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- iOS阶段学习第29天笔记(UITextField的介绍)
iOS学习(UI)知识点整理 一.关于UITextField的介绍 1)概念: UITextField 是用于接收用户输入的一个控件 2)UITextField 初始化实例代码: //创建一个UIt ...
- iOS阶段学习第20天笔记(MRC内存管理)
iOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效 OC中采用 ...
- iOS阶段学习第14天笔记(NSString与NSMutableString)
iOS学习(OC语言)知识点整理 一.OC字符串的操作 1)OC中字符串分为两种: 1.不可变字符串NSString:不能修改对象内容,但是可以改变对象的指针. 2.可变字符串NSMutableStr ...
- iOS阶段学习第四天笔记(循环)
iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ } 两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...
- iOS 阶段学习第四天笔记(循环)
iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ } 两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...
随机推荐
- undefined function openssl_x509_read
打开php.ini,找到这一行 ;extension=php_openssl.dll,将前面的";"去掉 再重启apache或者iis即可
- iOS——自定义Segue实现总结
在阅读了iOS 8自定义动画转场上手指南后,刚开始不理解,后来慢慢消化了,现在总结如下: 1. 自定义Segue关键在于继承UIStoryboardSegue并重写perform方法 2. 动画可以在 ...
- 翻译-Salt与Ansible全方位比较
原文链接:http://jensrantil.github.io/salt-vs-ansible.html 作者: Jens Rantil 之前某些时候我需要评估配置管理系统.结合从他人得到的意见,我 ...
- IOS 公共类-MyMBProgressUtil Progress显示
IOS 公共类-MyMBProgressUtil Progress显示 此公共类用于显示提示框,对MBProgress的进一步封装.可以看下面的代码 接口: @interface MyMBProgre ...
- js实现一个可以兼容PC端和移动端的div拖动效果
前段时间写了一个简单的div拖动效果,不料昨天项目上正好需要一个相差不多的需求,就正好用上了,但是在移动端的时候却碰到了问题,拖动时候用到的三个事件:mousedown.mousemove.mouse ...
- Excel批量插入多行
在一个表中插入10行空行,你是不是这样做的:选取要插入的位置 - 右键插入行.重复插入10次.如下图所示: 其实插入多行是可以一次完成的,方法是:你需要插入多少行,就向下选取多少行再插入.如下图所示:
- 每天一个linux命令(50):crontab命令
前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
- 静态(static)代码块、构造代码块、构造函数、父类子类执行顺序
静态代码块:static修饰的代码块. 在类加载-初始化的时候进行,主要目的是给变量赋予初始值 构造代码块:直接在类中定义且没有加static关键字的代码块称为构造代码块. java会把构造代码块放到 ...
- APP 版本更新 流程(已上架APP,提交新版本)
背景: 今天发布app的新版本, 可是无奈换了电脑, 没有了以前上架时候的发布证书和描述文件. 但是没关系, 依然可以上传成功,哈哈哈~ 虽然走了很多弯路 - -|| 如果是向 App Store 提 ...
- Design2:数据层次结构建模之二
MSSql提供了一个新的数据类型 HierarchyID,用来处理层次结构的数据,这个数据类型是系统内置的CLR数据类型,不需要专门激活 SQL/CLR 功能即可使用.当需要表示各值之间的嵌套关系,并 ...