iOS開發(fā)中對文件目錄的訪問及管理的基本方法小結(jié)
文件目錄的訪問
最簡單的:(由于是沙盒關(guān)系,沒有文件夾概念的)
UIImage* image = [UIImage imageNamed:@"11.png"];
這個已經(jīng)是相對app里面打包好的路徑,不需要額外添加路徑。
還有一種就是需要指定文件路徑的:
需要用到NSBundle.
[[NSBundle mainBundle] resourcePath],這個就是程序的打包后的路徑。
如果需要指定路徑,就要這樣寫:
你也可自己拼接:
NSString* path = [NSStringstringWithFormat:@"%@/%@/%@",[[NSBundlemainBundle] resourcePath],@"document",@"aaa.txt"];
或者直接:
NSString* path = [[NSBundle mainBundle] pathForResource:@"aaa" ofType:@"png"];
一般來說應(yīng)用程序有3個目錄
Documents,Library,tmp
現(xiàn)在apple不允許把大數(shù)據(jù)保存在documents文檔,如果你想把視頻什么的保存在documents文檔里面,需要備份到icould比較麻煩。
一般窩的做法就是保存在Library的caches目錄下面(不知道是否合理:))
tmp目錄的話,保存一些臨時文件,在退出程序的時候你可以把里面的緩存內(nèi)容刪除。
在應(yīng)用程序中獲得自己的documents目錄:
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString * documentDirectory = [paths objectAtIndex:0];
在上面的基礎(chǔ)上,獲得一個完整的文件路徑和名字:
NSString * file = [documentDirectory stringByAppendingPathComponent:@"file1.txt"];
這就可以用file來創(chuàng)建,讀取,和寫入文件。
文件目錄管理
下面來看一些常用的文件目錄管理方法
1、常見的NSFileManager文件方法
-(NSData *)contentsAtPath:path //從一個文件讀取數(shù)據(jù)
-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr //向一個文件寫入數(shù)據(jù)
-(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 //比較兩個文件的內(nèi)容
-(BOOL)fileExistAtPath:path //測試文件是否存在
-(BOOL)isReadableFileAtPath:path //測試文件是否存在,并且是否能執(zhí)行讀操作
-(BOOL)isWriteableFileAtPath:path //測試文件是否存在,并且是否能執(zhí)行寫操作
-(NSDictionary *)attributesOfItemAtPath:path error:err //獲取文件的屬性
-(BOOL)setAttributesOfItemAtPath:attr error:err //更改文件的屬性
2.使用目錄
-(NSString *)currentDirectoryPath //獲取當前目錄
-(BOOL)changeCurrentDirectoryPath:path //更改當前目錄
-(BOOL)copyItemAtPath:from toPath:to error:err //復制目錄結(jié)構(gòu)(to不能是已存在的)
-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attribute:attr //創(chuàng)建一個新目錄
-(BOOL)fileExistAtPath:path isDirectory:(BOOL*)flag //測試文件是不是目錄(flag中儲存結(jié)果YES/NO)
-(NSArray *)contentsOfDirectoryAtPath:path error:err //列出目錄內(nèi)容
-(NSDirectoryEnumerator *)enumeratorAtPath:path //枚舉目錄的內(nèi)容
-(BOOL)removeItemAtPath:path error:err //刪除空目錄
-(BOOL)moveItemAtPath:from toPath:to error:err //重命名或移動一個目錄(to不能是已存在的)
3、常用路徑工具方法
+(NSString *)pathWithComponens:components //根據(jù)components中的元素構(gòu)造有效路徑
-(NSArray *)pathComponents //析構(gòu)路徑,獲得組成此路徑的各個部分
-(NSString *)lastPathComponent //提取路徑的最后一個組成部分
-(NSString *)pathExtension //從路徑的最后一個組成部分中提取其擴展名
-(NSString *)stringByAppendingPathComponent:path //將path添加到現(xiàn)有路徑的末尾
-(NSString *)stringByAppendingPathExtension:ext //將指定的擴展名添加到路徑的最后一個組成部分
-(NSString *)stringByDeletingLastPathComponent //刪除路徑的最后一個組成部分
-(NSString *)stringByDeletingPathExtension //從文件的最后一部分刪除擴展名
-(NSString *)stringByExpandingTileInPath //將路徑中代字符擴展成用戶主目錄(~)或指定用戶的主目錄(~user)
-(NSString *)stringByresolvingSymlinksInPath //嘗試解析路徑中的符號鏈接
-(NSString *)stringByStandardizingPath //通過嘗試解析~、..(父目錄符號)、.(當前目錄符號)和符號鏈接來標準化路徑
4、常用的路徑工具函數(shù)
NSString* NSUserName(void) //返回當前用戶的登錄名
NSString* NSFullUserName(void) //返回當前用戶的完整用戶名
NSString* NSHomeDirectory(void) //返回當前用戶主目錄的路徑
NSString* NSHomeDirectoryForUser(NSString* user) //返回用戶user的主目錄
NSString* NSTemporaryDirectory(void) //返回可用于創(chuàng)建臨時文件的路徑目錄
5、常用的IOS目錄
Documents(NSDocumentDirectory) //用于寫入應(yīng)用相關(guān)數(shù)據(jù)文件的目錄,在ios中寫入這里的文件能夠與iTunes共享并訪問,存儲在這里的文件會自動備份到云端
Library/Caches(NSCachesDirectory) //用于寫入應(yīng)用支持文件的目錄,保存應(yīng)用程序再次啟動需要的信息。iTunes不會對這個目錄的內(nèi)容進行備份
tmp(use NSTemporaryDirectory()) //這個目錄用于存放臨時文件,只程序終止時需要移除這些文件,當應(yīng)用程序不再需要這些臨時文件時,應(yīng)該將其從這個目錄中刪除
Library/Preferences //這個目錄包含應(yīng)用程序的偏好設(shè)置文件,使用 NSUserDefault類進行偏好設(shè)置文件的創(chuàng)建、讀取和修改
相關(guān)文章
iOS 11 使用兩種方法替換(Method Swizzling)去掉導航欄返回按鈕的文字
這篇文章主要介紹了iOS 11 使用方法替換(Method Swizzling)去掉導航欄返回按鈕的文字,需要的朋友可以參考下2018-05-05
safari調(diào)試iOS app web頁面的步驟
這篇文章主要為大家詳細介紹了safari調(diào)試iOS app web頁面的步驟,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
UITextView實現(xiàn)只允許鏈接交互不允許選擇圖片的方法
這篇文章主要介紹了UITextView實現(xiàn)只允許鏈接交互不允許選擇圖片的方法,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03
詳解Objective-C編程中對設(shè)計模式中適的配器模式的使用
這篇文章主要介紹了Objective-C編程中對設(shè)計模式中適的配器模式的使用,適配器模式中的Adapter適配器允許接口不兼容的類在一起工作,需要的朋友可以參考下2016-03-03
iOS App開發(fā)中UIViewController類的使用教程
UIViewController是iOS中控制視圖的關(guān)鍵所在,這里我們將針對UIViewController的聲明周期與主要屬性和方法,來總結(jié)iOS App開發(fā)中UIViewController類的使用教程2016-07-07

