麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

iOS階段學(xué)習(xí)第17天筆記(NSFileManager-NSFileHandle-文件操作)

2019-11-14 18:43:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

iOS學(xué)習(xí)(OC語(yǔ)言)知識(shí)點(diǎn)整理

一、單例模式

 

1)單例是一種編程思想,一個(gè)設(shè)計(jì)模式,與語(yǔ)言無(wú)關(guān)在采用了單例對(duì)象的應(yīng)用程序中,需要單例類(lèi)自行提供實(shí)例化單例對(duì)象,

     不管實(shí)例化單例對(duì)象多少次,只有一個(gè)對(duì)象存在,這個(gè)對(duì)象是全局的,能夠被整個(gè)應(yīng)用程序共享,訪問(wèn)

 

2)使用單例模式時(shí)使用類(lèi)提供的類(lèi)方法獲取單例對(duì)象,盡量不要用alloc init的方法獲取單例對(duì)象

 

3)單例類(lèi)提供類(lèi)方法獲取單例對(duì)象時(shí)類(lèi)方法一般以sharedXX/standedXX/defaultXX開(kāi)頭 

實(shí)例代碼:  

#import "Plane.h"static Plane *plane=nil;//定義一個(gè)靜態(tài)的全局變量@implementation Plane//獲取單例對(duì)象的方法 +(Plane *)sharedPalne{    //解決數(shù)據(jù)同步(當(dāng)一個(gè)線程訪問(wèn)時(shí),其他的線程不能操作    @synchronized(self){        if(plane==nil){             plane=[[Plane alloc]init];       }    }    return plane;}//當(dāng)調(diào)用alloc方法時(shí)會(huì)執(zhí)行此方法 +(id)allocWithZone:(struct _NSZone *)zone{    NSLog(@"%@",NSStringFromSelector(_cmd));    if(plane==nil){        plane=[super allocWithZone:zone];    }    return plane;}@end

 

二、NSFileManager  文件/文件夾 的操作

 

1)NSFileManager 用于對(duì)文件或目錄(文件夾)管理的單例類(lèi)。

 

2)文件管理類(lèi)的實(shí)例化方法 例如:

1  NSFileManager *fm=[NSFileManager defaultManager];

  

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

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

 

4)createFileAtPath 用于創(chuàng)建文件 第一個(gè)參數(shù)是文件名,第二個(gè)參數(shù)是文件的初始值,第三個(gè)參數(shù)是文件的屬性 例如:    

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

  

5)copyItemAtPath 用于復(fù)制文件:將某一個(gè)文件復(fù)制成另一個(gè)文件,第三個(gè)參數(shù):回調(diào)錯(cuò)誤信息 例如:

 1  NSError *error=nil;//用于接收錯(cuò)誤信息  3  NSString  *curpath=@"/Users/kingkong/Desktop/Test/test.txt”;  5  NSString  *topath=@"/Users/kingkong/Desktop/Test/test2.txt”;  7  ret=[fm copyItemAtPath: curpath  toPath: topath  error:&error];  9  if(error!=nil){ 11    NSLog(@"error:%@",[error userInfo]); 13  }

  

6)moveItemAtPath 用于移動(dòng)/重命名文件;將某個(gè)路徑下的文件移動(dòng)到另一個(gè)路徑下的文件(目標(biāo)路徑一定要指定文件名),

     如果源路徑與目   標(biāo)路徑下的文件名不同,同時(shí)重命名 例如: 

1 NSString  *curpath=@"/Users/kingkong/Desktop/Test/test.txt”;2 3 NSString  *topath=@"/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:當(dāng)對(duì)文件操作(寫(xiě)數(shù)據(jù)到文件和從文件中讀數(shù)據(jù))和從網(wǎng)絡(luò)上獲取數(shù)據(jù),需要將數(shù)據(jù)轉(zhuǎn)換為純粹的二進(jìn)制形式,

     NSData就是二進(jìn)制形式的緩存對(duì)象,相當(dāng)于C中的char buf[255] 例如: 

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

  

10)NSData數(shù)據(jù)轉(zhuǎn)換為NSString類(lèi)型數(shù)據(jù) 例如:       

1  //NSData---->NSString,將NSData對(duì)象轉(zhuǎn)換為字符串2 3 NSString *scontent=[[NSString alloc]initWithData:content  encoding:NSUTF8StringEncoding];      

  

11)NSString類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為NSData數(shù)據(jù) 例如:

1 NSString *str=@"hello China!";2 3 //NSString---->NSData;將字符串轉(zhuǎn)換為NSData數(shù)據(jù)(寫(xiě)入文件或傳輸?shù)骄W(wǎng)絡(luò)上)4 5 NSData *data2=[str dataUsingEncoding:NSUTF8StringEncoding];

 

12)createFileAtPath … contents 建文件并指定寫(xiě)入內(nèi)容 例如: 

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

 

13)fileExistsAtPath… isDirectory 判斷目錄是否存在(在文件/目錄存在的情況下,通過(guò)第二個(gè)參數(shù)獲取是否是目錄/文件) 例如: 

1 BOOL isDir;//可能結(jié)果有:-1,0,12 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  深遍歷:獲取目錄下所有的內(nèi)容(包括子目錄下的所有的內(nèi)容) 例如: 

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

 

16)currentDirectoryPath 獲取當(dāng)前應(yīng)用程序所在目錄 例如: 

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

 

17)createDirectoryAtPath… withIntermediateDirectories  創(chuàng)建目錄,第一個(gè)參數(shù)是目錄名,第二個(gè)參數(shù)是 

       當(dāng)目錄不存在時(shí)是否需要?jiǎng)?chuàng)建其上一級(jí)不存在的目錄(中間目錄) 

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

   

三、NSFileHandle 對(duì)文件進(jìn)行讀寫(xiě)操作

 

1)fileHandleForReadingAtPath 創(chuàng)建一個(gè)只讀文件的對(duì)象(句柄) 例如: 

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

 

2)readDataOfLength 讀取文件中指定長(zhǎng)度的內(nèi)容 例如:

NSData *data=[readHandle readDataOfLength:3];NSString *sdata=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];NSLog(@"%@",sdata);

 

3)readDataToEndOfFile 從當(dāng)前位置讀取內(nèi)容到文件結(jié)束 例如: 

1 data=[readHandle readDataToEndOfFile];2 3 sdata=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];4 5 NSLog(@"%@",sdata);6 7 [readHandle closeFile];//讀取文件內(nèi)容結(jié)束(注意如果上次讀取過(guò)沒(méi)關(guān)閉再次讀取時(shí)會(huì)從上次讀取結(jié)束位置開(kāi)始讀取)

 

4)fileHandleForWritingAtPath 創(chuàng)建一個(gè)只寫(xiě)文件的對(duì)象 例如: 

 1 NSFileHandle *writeHandle=[NSFileHandle fileHandleForWritingAtPath:path"]; 2  3 NSString *s1=@"hello"; 4  5 //seekToEndOfFile 將對(duì)象指針移到文件末尾(實(shí)現(xiàn)追加內(nèi)容) 6  7 [writeHandle seekToEndOfFile]; 8  9 [writeHandle writeData:[s1 dataUsingEncoding:NSUTF8StringEncoding]];10 11  //synchronizeFile將數(shù)據(jù)同步寫(xiě)入文件中12 13 [writeHandle synchronizeFile];14 15 [writeHandle closeFile];//表明操作結(jié)束

  

5)truncateFileAtOffset 從指定位置字符開(kāi)始截?cái)辔募?nèi)容,保留多少個(gè)字符,設(shè)置為0,再寫(xiě)入相當(dāng)于清空重寫(xiě) 例如: 

1  [writeHandle truncateFileAtOffset:4];

 

6)seekToFileOffset 從指定位置字符開(kāi)始寫(xiě)入文件,覆蓋部分內(nèi)容 例如: 

1    [writeHandle seekToFileOffset:2];

 

四、關(guān)于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]);//結(jié)果:txt

 

3)isAbsolutePath 判斷是否是絕對(duì)路徑:以/開(kāi)頭的路徑 例如: 

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

 

4)lastPathComponent 獲取路徑的最后一部分  例如: 

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

 

5)stringByAppendingPathComponent 在一個(gè)路徑后添加另一個(gè)路徑 例如: 

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

 

6)stringByAppendingPathExtension 為路徑添加擴(kuò)展名 例如: 

1 NSLog(@"%@",[path stringByAppendingPathExtension:@"m"]);2 3 //結(jié)果:/Users/kingkong/Desktop/Test/text.txt.m

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奶子吧naiziba.cc免费午夜片在线观看 | 91精品国产九九九久久久亚洲 | 国产精品亚洲一区二区三区在线观看 | 中文字幕在线视频日本 | 黄色的视频免费看 | 欧美国产一区二区三区 | 免费一级毛片在线播放视频 | 日本一级黄色大片 | 久久久久久久.comav | 日韩精品羞羞答答 | 午夜视频国产 | 国产精品久久久久久久久岛 | www视频免费观看 | 黄色网址免费进入 | 成人毛片av在线 | 操操操日日日干干干 | 日本看片一区二区三区高清 | 91成人在线免费 | 国产精品免费久久久久 | 国产亚洲精品久久久久久大师 | 一级免费特黄视频 | www嫩草| 精品国产一区二区三区四 | 可以看毛片的网址 | 黄色毛片视频在线观看 | 激情综合婷婷久久 | 国产成人小视频在线观看 | 久久精品亚洲欧美日韩精品中文字幕 | 国产wwww| 一级全毛片| 日韩视频精品一区 | 国产一级一级片 | 91精品国产一区二区三区四区在线 | 亚洲一区 国产 | 精品国产呦系列在线看 | 双性精h调教灌尿打屁股的文案 | 久久久精品精品 | 91资源在线观看 | 免费观看视频在线观看 | 久久久婷婷 | 欧美黄色免费视频 |