標籤:
NSFileManeger檔案管理工具提供許多通用的檔案操作,使用者可以通過使用共用的檔案管理對象(NSFileManager *fm = [NSFileManager defaultManager];);ios和mac os x 10.5以後,使用者可以建立一個唯一的檔案管理工具委派物件。檔案管理工具可以用來 定位 建立 拷貝 移動 檔案和檔案夾。擷取 檔案或檔案夾 屬性(大小,修改日期,許可權),還可以用來改變 檔案和檔案夾的屬性。檔案管理工具支援 NSURL 和 NSString 兩種方式來定位檔案或檔案夾。NSURL通常是首選的方式,因為這種方式將路徑資訊轉換成更高效的表示。你也可以從NSURL中擷取一個“書籤”,一種類似別名的方式提供定位檔案或者檔案夾的方式。如果想要移動,拷貝,連結或刪除檔案或檔案夾,你可以使用一個檔案管理工具的代理來管理這些操作。代理是用來定義這些操作以及出錯後怎樣處理。mac os x 10.7以後,代理必須符合NSFileManagerDelegate協議。iOS 5.0 和 mac os x 10.7以後 ,NSFileManager引入了一些新方法,這些方法可以將檔案儲存至iCloud。用來儲存在雲端的檔案標籤和檔案夾標籤和iCloud中的應該是同步的。這樣可以使檔案在使用者的ios裝置和mac裝置之間共用。檔案或檔案夾在一處的更改將發送給其他裝置來確定這些更改同步。
NSFileManager的共用對象是安全執行緒的。但如果你使用了代理方式來接收檔案操作的訊息,需要自己建立一個單一實例的檔案管理對象來給代理,並使用該對象來完成檔案操作,保證安全執行緒。
1、常見的NSFileManager檔案方法
-(NSData *)contentsAtPath:path //從一個檔案讀取資料
-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr //向一個檔案寫入資料
-(BOOL)removeItemAtPath:path error:err //刪除一個檔案
-(BOOL)moveItemAtPath:from toPath:to error:err //重新命名或者移動一個檔案(to不能是已存在的)
-(BOOL)copyItemAtPath:from toPath:to error:err //複製檔案(to不能是已存在的)
-(BOOL)contentsEqualAtPath:path andPath:path2 //比較兩個檔案的內容
-(BOOL)fileExistAtPath:path //測試檔案是否存在
-(BOOL)isReadableFileAtPath:path //測試檔案是否存在,並且是否能執行讀操作
-(BOOL)isWriteableFileAtPath:path //測試檔案是否存在,並且是否能執行寫操作
-(NSDictionary *)attributesOfItemAtPath:path error:err //擷取檔案的屬性
-(BOOL)setAttributesOfItemAtPath:attr error:err //變更檔的屬性
2.使用目錄
-(NSString *)currentDirectoryPath //擷取目前的目錄
-(BOOL)changeCurrentDirectoryPath:path //更改目前的目錄
-(BOOL)copyItemAtPath:from toPath:to error:err //複製目錄結構(to不能是已存在的)
-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attribute:attr //建立一個新目錄
-(BOOL)fileExistAtPath:path isDirectory:(BOOL*)flag //測試檔案是不是目錄(flag中儲存結果YES/NO)
-(NSArray *)contentsOfDirectoryAtPath:path error:err //列出目錄內容
-(NSDirectoryEnumerator *)enumeratorAtPath:path //枚舉目錄的內容
-(BOOL)removeItemAtPath:path error:err //刪除空目錄
-(BOOL)moveItemAtPath:from toPath:to error:err //重新命名或移動一個目錄(to不能是已存在的)
3、常用路徑工具方法
+(NSString *)pathWithComponens:components //根據components中的元素構造有效路徑
-(NSArray *)pathComponents //析構路徑,獲得組成此路徑的各個部分
-(NSString *)lastPathComponent //提取路徑的最後一個組成部分
-(NSString *)pathExtension //從路徑的最後一個組成部分中提取其副檔名
-(NSString *)stringByAppendingPathComponent:path //將path添加到現有路徑的末尾
-(NSString *)stringByAppendingPathExtension:ext //將指定的副檔名添加到路徑的最後一個組成部分
-(NSString *)stringByDeletingLastPathComponent //刪除路徑的最後一個組成部分
-(NSString *)stringByDeletingPathExtension //從檔案的最後一部分刪除副檔名
-(NSString *)stringByExpandingTileInPath //將路徑中代字元擴充成使用者主目錄(~)或指定使用者的主目錄(~user)
-(NSString *)stringByresolvingSymlinksInPath //嘗試解析路徑中的符號連結
-(NSString *)stringByStandardizingPath //通過嘗試解析~、..(父目錄符號)、.(目前的目錄符號)和符號連結來標準化路徑
4、常用的路徑工具函數
NSString* NSUserName(void) //返回目前使用者的登入名稱
NSString* NSFullUserName(void) //返回目前使用者的完整使用者名稱
NSString* NSHomeDirectory(void) //返回目前使用者主目錄的路徑
NSString* NSHomeDirectoryForUser(NSString* user) //返回使用者user的主目錄
NSString* NSTemporaryDirectory(void) //返回可用於建立臨時檔案的路徑目錄
5、常用的IOS目錄
Documents(NSDocumentDirectory) //用於寫入應用相關資料檔案的目錄,在ios中寫入這裡的檔案能夠與iTunes共用並訪問,儲存在這裡的檔案會自動備份到雲端
Library/Caches(NSCachesDirectory) //用於寫入應用支援檔案的目錄,儲存應用程式再次啟動需要的資訊。iTunes不會對這個目錄的內容進行備份
tmp(use NSTemporaryDirectory()) //這個目錄用於存放臨時檔案,只程式終止時需要移除這些檔案,當應用程式不再需要這些臨時檔案時,應該將其從這個目錄中刪除
Library/Preferences //這個目錄包含應用程式的喜好設定檔案,使用 NSUserDefault類進行喜好設定檔案的建立、讀取和修改
IOS管理檔案和目錄