IOS阶段学习第17天笔记(OC中文件的操作)

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)文件管理类的实例化方法 例如:

1  NSFileManager *fm=[NSFileManager defaultManager];

3)fileExistsAtPath 用于判断文件是否存在 例如:

1 BOOL ret=[fm fileExistsAtPath:@"/Users/kingkong/Desktop/Test/test.txt"];

4)createFileAtPath 用于创建文件 第一个参数是文件名,第二个参数是文件的初始值,第三个参数是文件的属性 例如:

1 BOOL ret=[fm createFileAtPath:@"/Users/kingkong/Desktop/Test/test.txt" contents:nil attributes:nil];

5)copyItemAtPath 用于复制文件:将某一个文件复制成另一个文件,第三个参数:回调错误信息 例如:

 1         NSError *error=nil;//用于接收错误信息
 2
 3         NSString  *curpath=@"/Users/kingkong/Desktop/Test/test.txt”;
 4
 5         NSString  *[email protected]"/Users/kingkong/Desktop/Test/test2.txt”;
 6
 7         ret=[fm copyItemAtPath: curpath  toPath: topath  error:&error];
 8
 9         if(error!=nil){
10
11             NSLog(@"error:%@",[error userInfo]);
12
13         }

6)moveItemAtPath 用于移动/重命名文件;将某个路径下的文件移动到另一个路径下的文件(目标路径一定要指定文件名),

如果源路径与目   标路径下的文件名不同,同时重命名 例如:

1 NSString  *curpath=@"/Users/kingkong/Desktop/Test/test.txt”;
2
3 NSString  *[email protected]"/Users/kingkong/Desktop/Test/test2.txt”;
4
5 [fm moveItemAtPath: curpath toPath: topath error:nil];

7)attributesOfItemAtPath 获取文件的属性 例如:

1 NSString  *curpath=@"/Users/kingkong/Desktop/Test/test.txt";
2
3 NSDictionary *dict= [fm attributesOfItemAtPath: curpath error:nil];
4
5 //获取属性字典中该文件的大小
6
7 NSLog(@"size:%@",[dict objectForKey:NSFileSize]);

8)removeItemAtPath 用于删除指定路径下的文件 例如:

1 NSString  *path=@"/Users/kingkong/Desktop/Test/test.txt”;
2
3 BOOL ret=[fm removeItemAtPath: path error:nil];

9)NSData:当对文件操作(写数据到文件和从文件中读数据)和从网络上获取数据,需要将数据转换为纯粹的二进制形式,

NSData就是二进制形式的缓存对象,相当于C中的char buf[255] 例如:

1 NSString  *path=@"/Users/kingkong/Desktop/Test/test.txt”;
2
3 NSData *content=[fm contentsAtPath: path]; 

10)NSData数据转换为NSString类型数据 例如:

1  //NSData---->NSString,将NSData对象转换为字符串
2
3 NSString *scontent=[[NSString alloc]initWithData:content  encoding:NSUTF8StringEncoding];      

11)NSString类型的数据转换为NSData数据 例如:

1 NSString *str=@"hello China!";
2
3 //NSString---->NSData;将字符串转换为NSData数据(写入文件或传输到网络上)
4
5 NSData *data2=[str dataUsingEncoding:NSUTF8StringEncoding];

12)createFileAtPath … contents 建文件并指定写入内容 例如:

1 NSString  *path=@"/Users/kingkong/Desktop/Test/test.txt”;
2
3 [fm createFileAtPath:path contents:data2  attributes:nil];

13)fileExistsAtPath… isDirectory 判断目录是否存在(在文件/目录存在的情况下,通过第二个参数获取是否是目录/文件) 例如:

1 BOOL isDir;//可能结果有:-1,0,1
2
3 NSString  *path=@"/Users/kingkong/Desktop/Test/test.txt”;
4
5 BOOL ret=[fm fileExistsAtPath:path isDirectory:&isDir];

14)contentsOfDirectoryAtPath 浅遍历:获取目录下的子目录和文件名 例如:

1 NSString  *path=@"/Users/kingkong/Desktop/Test”;
2
3 NSArray *array=[fm contentsOfDirectoryAtPath: path error:nil];
4
5 NSLog(@"array%@",array);

15)subpathsAtPath  深遍历:获取目录下所有的内容(包括子目录下的所有的内容) 例如:

1 NSString  *path=@"/Users/kingkong/Desktop/Test”;
2
3 NSArray *array2=[fm subpathsAtPath:path];
4
5 NSLog(@"array2:%@",array2);

16)currentDirectoryPath 获取当前应用程序所在目录 例如:

1 NSString* currentPath=[fm currentDirectoryPath];
2
3 NSLog(@"%@",currentPath);

17)createDirectoryAtPath… withIntermediateDirectories  创建目录,第一个参数是目录名,第二个参数是

当目录不存在时是否需要创建其上一级不存在的目录(中间目录)

1 NSString  *path=@"/Users/kingkong/Desktop/Test/File”;
2
3 BOOL ret=[fm createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];

三、NSFileHandle 对文件进行读写操作

1)fileHandleForReadingAtPath 创建一个只读文件的对象(句柄) 例如:

1 NSString *path=@"/Users/kingkong/Desktop/Test/test.txt”;
2
3 NSFileHandle *readHandle=[NSFileHandle fileHandleForReadingAtPath: path];

2)readDataOfLength 读取文件中指定长度的内容 例如:

NSData *data=[readHandle readDataOfLength:3];

NSString *sdata=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"%@",sdata);

3)readDataToEndOfFile 从当前位置读取内容到文件结束 例如:

1 data=[readHandle readDataToEndOfFile];
2
3 sdata=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
4
5 NSLog(@"%@",sdata);
6
7 [readHandle closeFile];//读取文件内容结束(注意如果上次读取过没关闭再次读取时会从上次读取结束位置开始读取)

4)fileHandleForWritingAtPath 创建一个只写文件的对象 例如:

 1 NSFileHandle *writeHandle=[NSFileHandle fileHandleForWritingAtPath:path"];
 2
 3 NSString *s1=@"hello";
 4
 5 //seekToEndOfFile 将对象指针移到文件末尾(实现追加内容)
 6
 7 [writeHandle seekToEndOfFile];
 8
 9 [writeHandle writeData:[s1 dataUsingEncoding:NSUTF8StringEncoding]];
10
11  //synchronizeFile将数据同步写入文件中
12
13 [writeHandle synchronizeFile];
14
15 [writeHandle closeFile];//表明操作结束

5)truncateFileAtOffset 从指定位置字符开始截断文件内容,保留多少个字符,设置为0,再写入相当于清空重写 例如:

1  [writeHandle truncateFileAtOffset:4];

6)seekToFileOffset 从指定位置字符开始写入文件,覆盖部分内容 例如:

1    [writeHandle seekToFileOffset:2];

四、关于Path (文件路径)的操作

1)pathComponents 获取路径的各部分 例如:

1 NSString *path=@"/Users/kingkong/Desktop/Test/text.txt”;
2
3 NSArray *array1= [path pathComponents];
4
5 NSLog(@"array1:%@",array1);

2)pathExtension 获取文件后缀名 例如:

1 NSLog(@"%@",[path pathExtension]);//结果:txt

3)isAbsolutePath 判断是否是绝对路径:以/开头的路径 例如:

1  NSLog(@"%d",[path isAbsolutePath]);//结果:1

4)lastPathComponent 获取路径的最后一部分  例如:

1  NSLog(@"last:%@",path.lastPathComponent);//结果:text.txt

5)stringByAppendingPathComponent 在一个路径后添加另一个路径 例如:

1 NSLog(@"%@",[path stringByAppendingPathComponent:@"files”]);
2
3 //结果:/Users/kingkong/Desktop/Test/text.txt/files

6)stringByAppendingPathExtension 为路径添加扩展名 例如:

1 NSLog(@"%@",[path stringByAppendingPathExtension:@"m"]);
2
3 //结果:/Users/kingkong/Desktop/Test/text.txt.m
时间: 2024-10-10 18:30:35

IOS阶段学习第17天笔记(OC中文件的操作)的相关文章

IOS阶段学习第15天笔记(OC NSDate的操作)

1 NSDate *newdate=[NSDate date]; 2 //时间格式化字符串 3 NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 4 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss MMM eee a"]; 5 NSString *strdate = [formatter stringFromDate:newdate]; 6 NSLog(@"%@

IOS阶段学习第18天笔记(归档与解归档操作)

IOS学习(OC语言)知识点整理 一.归档与解归档的操作 1)归档是一个过程,将一个或多个对象存储起来,以便以后可以还原,包括将对象存入文件,以后再读取 将数据对象归档成plist文件 2)plist文件中只能存放:NSString.NSDate.NSNumber.Bool.NSData.NSArray.NSDictionary 并且NSArray和NSDictionary中只能是以上的类型 3)归档存放时数据是什么类型,读取数据时就用什么类型的数据接收. 4)归档不能直接操作自定义对象类型的数

IOS阶段学习第20天笔记(OC中的内存管理)

IOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效      OC中采用引用计数器对内存做管理,他是一个整数数据,表示对象引用的次数,每个对象分配4字节      的内存空间存放引用计数器.当一个对象的引用计数器为0时 它将被自动释放,反过来说 当使用alloc.      new .copy(mutableCopy)创建新对象时,引用计数器默认为1 2)黄金法则 当使

IOS阶段学习第13天笔记(NSString与NSMutableString)

IOS学习(OC语言)知识点整理 一.OC字符串的操作 1)OC中字符串分为两种: 1.不可变字符串NSString:不能修改对象内容,但是可以改变对象的指针. 2.可变字符串NSMutableString:可以修改对象内容. 二.NSString 不可变字符串的操作 1)将字符串常量对象直接赋值给字符串引用 NSString *[email protected]"hello"; 字符串对象的输出格式:NSLog(@"str1=%@",str1). 2)initWi

IOS阶段学习第21天笔记(ARC内存管理-Copy-代理)

IOS学习(OC语言)知识点整理 一.OC 中的ARC内存管理 1)ARC中释放对象的内存原则:看这个对象有没有强引用指向它 2)strong:强引用,默认情况下的引用都是强引用 3) weak:弱引用__weak 4)ARC环境下:与内存相关的代码都不能使用了,如果要在ARC环境下使用MRC内存管理代码 如: [super    delloc]  选中项目找到 Build Phases 菜单下的  Compile Sources 项 选中要转换的.m文件, 双击写入此行代码:-fno-objc

IOS阶段学习第16天笔记(Category、NSSet、NSIndexSet的操作)

IOS学习(OC语言)知识点整理 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 例如: //宏定义 #define TOBJ(n) [NSNumber numberWithInt:n] NSSet *set1=[[NSSet alloc]initWithObjects:TOBJ(2),TOBJ(3),TOBJ(3),TOBJ(1),TOBJ(5), nil]; 2)用类方法创

IOS阶段学习第19天笔记(协议-Protocol)

IOS学习(OC语言)知识点整理 一.关于协议(Protocol)的介绍 1)概念:协议指多个对象之间协商的一个接口对象,协议提供了一些方法用在协议的实现者和代理者      之间通讯的一种方式 2)声明一个协议@protocol协议的名字<基协议> 一个协议可以遵守另一个协议:      基协议(这个协议就拥有了基协议中所有方法的声明) 3)协议中不能声明成员变量,只能有方法声明. 4)协议中声明方法,默认是required 表明方法是必须要实现的,否则会有系统警告,但不会报错 5)协议中@

IOS 阶段学习第22天笔记(JSON数据格式)

IOS学习(OC语言)知识点整理 一.JSON数据格式 1)概念:json是一种网络数据传输格式,有值/对象:{“A”:1,”B”:”2”…}词典:对象的序列:[,,,,,]数组两种数据类型 2)URLWithString 将字符串网址封装成NSURL对象 例如: 1 NSString *urlStr=@"http://10.0.8.8/sns/my/user_list.php?number=20 2 &page=";//get post 3 NSURL *url=[NSURL

IOS 阶段学习第十天笔记(字符串操作)

IOS学习(C语言)知识点整理 一.字符串的操作 1)字符串的存储,字符数组,在堆里面申请内存空间. 实例代码: #include <stdlib.h> #include <string.h> int main(){ char str[100] = "hello world"; char *p = "hello world"; //*p ='H';//常量字符串不可以修改,p指向只读的地址 p = str; *p = 'H'; // prin