目錄操作和文件管理
學習目的
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文件內容的格式是XmlRss/ target=_blank class=infotextkey>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開發-文件操作】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!