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