iOS數(shù)據(jù)管理文件及常用目錄

1、常見(jiàn)的NSFileManager文件方法

-(NSData *)contentsAtPath:path  //從一個(gè)文件讀取數(shù)據(jù)

-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr  //向一個(gè)文件寫(xiě)入數(shù)據(jù)

-(BOOL)removeItemAtPath:path error:err  //刪除一個(gè)文件

-(BOOL)moveItemAtPath:from toPath:to error:err  //重命名或者移動(dòng)一個(gè)文件(to不能是已存在的)

-(BOOL)copyItemAtPath:from toPath:to error:err  //復(fù)制文件(to不能是已存在的)

-(BOOL)contentsEqualAtPath:path andPath:path2  //比較兩個(gè)文件的內(nèi)容

-(BOOL)fileExistAtPath:path  //測(cè)試文件是否存在

-(BOOL)isReadableFileAtPath:path  //測(cè)試文件是否存在移迫,并且是否能執(zhí)行讀操作

-(BOOL)isWriteableFileAtPath:path  //測(cè)試文件是否存在旺嬉,并且是否能執(zhí)行寫(xiě)操作

-(NSDictionary *)attributesOfItemAtPath:path error:err  //獲取文件的屬性

-(BOOL)setAttributesOfItemAtPath:attr error:err  //更改文件的屬性

2.使用目錄

-(NSString *)currentDirectoryPath  //獲取當(dāng)前目錄

-(BOOL)changeCurrentDirectoryPath:path  //更改當(dāng)前目錄

-(BOOL)copyItemAtPath:from toPath:to error:err  //復(fù)制目錄結(jié)構(gòu)(to不能是已存在的)

-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attribute:attr  //創(chuàng)建一個(gè)新目錄

-(BOOL)fileExistAtPath:path isDirectory:(BOOL*)flag  //測(cè)試文件是不是目錄(flag中儲(chǔ)存結(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   //重命名或移動(dòng)一個(gè)目錄(to不能是已存在的)

3、常用路徑工具方法

+(NSString *)pathWithComponens:components  //根據(jù)components中的元素構(gòu)造有效路徑

-(NSArray *)pathComponents  //析構(gòu)路徑厨埋,獲得組成此路徑的各個(gè)部分

-(NSString *)lastPathComponent  //提取路徑的最后一個(gè)組成部分

-(NSString *)pathExtension  //從路徑的最后一個(gè)組成部分中提取其擴(kuò)展名

-(NSString *)stringByAppendingPathComponent:path  //將path添加到現(xiàn)有路徑的末尾

-(NSString *)stringByAppendingPathExtension:ext  //將指定的擴(kuò)展名添加到路徑的最后一個(gè)組成部分

-(NSString *)stringByDeletingLastPathComponent  //刪除路徑的最后一個(gè)組成部分

-(NSString *)stringByDeletingPathExtension  //從文件的最后一部分刪除擴(kuò)展名

-(NSString *)stringByExpandingTileInPath   //將路徑中代字符擴(kuò)展成用戶主目錄(~)或指定用戶的主目錄(~user)

-(NSString *)stringByresolvingSymlinksInPath  //嘗試解析路徑中的符號(hào)鏈接

-(NSString *)stringByStandardizingPath  //通過(guò)嘗試解析~邪媳、..(父目錄符號(hào))、.(當(dāng)前目錄符號(hào))和符號(hào)鏈接來(lái)標(biāo)準(zhǔn)化路徑

4揽咕、常用的路徑工具函數(shù)

NSString* NSUserName(void)  //返回當(dāng)前用戶的登錄名

NSString* NSFullUserName(void)  //返回當(dāng)前用戶的完整用戶名

NSString* NSHomeDirectory(void)  //返回當(dāng)前用戶主目錄的路徑

NSString* NSHomeDirectoryForUser(NSString* user)  //返回用戶user的主目錄

NSString* NSTemporaryDirectory(void)  //返回可用于創(chuàng)建臨時(shí)文件的路徑目錄

5悲酷、常用的IOS目錄

Documents(NSDocumentDirectory)  //用于寫(xiě)入應(yīng)用相關(guān)數(shù)據(jù)文件的目錄套菜,在ios中寫(xiě)入這里的文件能夠與iTunes共享并訪問(wèn)亲善,存儲(chǔ)在這里的文件會(huì)自動(dòng)備份到云端

Library/Caches(NSCachesDirectory)  //用于寫(xiě)入應(yīng)用支持文件的目錄,保存應(yīng)用程序再次啟動(dòng)需要的信息逗柴。iTunes不會(huì)對(duì)這個(gè)目錄的內(nèi)容進(jìn)行備份

tmp(use NSTemporaryDirectory())  //這個(gè)目錄用于存放臨時(shí)文件蛹头,只程序終止時(shí)需要移除這些文件,當(dāng)應(yīng)用程序不再需要這些臨時(shí)文件時(shí),應(yīng)該將其從這個(gè)目錄中刪除

Library/Preferences  //這個(gè)目錄包含應(yīng)用程序的偏好設(shè)置文件渣蜗,使用 NSUserDefault類進(jìn)行偏好設(shè)置文件的創(chuàng)建屠尊、讀取和修改

對(duì)于一個(gè)運(yùn)行在iPhone得app,它只能訪問(wèn)自己根目錄下的一些文件(所謂sandbox - 沙盒).

一個(gè)app發(fā)布到iPhone上后,它的目錄結(jié)構(gòu)如下:

1耕拷、其中得 app root 可以用 ?NSHomeDirectory() 訪問(wèn)到讼昆;

2、Documents 目錄就是我們可以用來(lái)寫(xiě)入并保存文件得地方骚烧,一般可通過(guò)下面的方式得到:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, ? ?NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

3浸赫、tmp 目錄我們可以在里面寫(xiě)入一些程序運(yùn)行時(shí)需要用得數(shù)據(jù),里面寫(xiě)入得數(shù)據(jù)在程序退出后會(huì)沒(méi)有赃绊〖认浚可以通過(guò)

NSString *NSTemporaryDirectory(void); 方法得到;

4碧查、文件一些主要操作可以通過(guò)NSFileManage 來(lái)操作运敢,可以通過(guò) [NSFileManger defaultManger] 得到它得實(shí)例。

相關(guān)得一些操作:

a.創(chuàng)建一個(gè)目錄或者文件:

比如要在Documents下面創(chuàng)建一個(gè)test目錄忠售,

01 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

02 NSString *documentsDirectory = [paths objectAtIndex:0];

03 NSLog(@”%@”,documentsDirectory);

04 NSFileManager *fileManage = [NSFileManager defaultManager];

05 NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@“test”];

06 BOOL ok = [fileManage createDirectoryAtPath:myDirectory attributes:nil];

比如要在Documents下面創(chuàng)建一個(gè)file.txt:

// 結(jié)果為:/Documents/file.txt NSString *filePath= [documentsDirectory stringByAppendingPathComponent:@"file.txt"];

b.取得一個(gè)目錄下得所有文件名:

1 //如上面的myDirectory)可用

2 NSArray *file = [fileManager subpathsOfDirectoryAtPath: myDirectory error:nil];

NSArray *files = [fileManager subpathsAtPath: myDirectory ];

c.讀取某個(gè)文件:

1 NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路徑的文件名或直接用NSData 的類方法: NSData *data = [NSData dataWithContentOfPath:myFilePath];

d.保存某個(gè)文件:

1 //可以用 NSFileManager的下列方法:

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;

或 NSData 的

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

- (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr;

e.刪除某個(gè)文件:

1 //可以用 NSFileManager的下列方法:

//Removes the file or directory at the specified path.

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error

//Removes the file or directory at the specified URL.

- (BOOL)removeItemAtURL:(NSURL *)URL error:(NSError **)error

f.移動(dòng)某個(gè)文件或者重命名某文件

1 //想要重命名一個(gè)文件传惠,我們需要把文件移到一個(gè)新的路徑下。下面的代碼創(chuàng)建了我們所期望的目標(biāo)文件的路徑稻扬,然后請(qǐng)求移動(dòng)文件以及在移動(dòng)之后顯示文件目錄涉枫。

2 //通過(guò)移動(dòng)該文件對(duì)文件重命名

3 NSString *filePath2= [documentsDirectory stringByAppendingPathComponent:@"file2.txt"];

4 //判斷是否移動(dòng)

5 if ([fileManager moveItemAtPath:filePath toPath:filePath2 error:&error] != YES)

6 NSLog(@"Unable to move file: %@", [error localizedDescription]);

7 //顯示文件目錄的內(nèi)容

8 NSLog(@"Documentsdirectory: %@",[fileManager contentsOfDirectoryAtPath:documentsDirectoryerror:&error]);

iPhone官方SDK用于讀寫(xiě)數(shù)據(jù)的方法

我們知道,出于安全考慮腐螟,iPhone的官方SDK并不能像toolchain一樣隨意寫(xiě)文件愿汰。

注意:這兩個(gè)方法都是存儲(chǔ)在/Documents/里面。

01 bool writeApplicationData(NSData *data, NSString *fileName)

{

? ?NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

?NSString *documentsDirectory = [paths objectAtIndex:0];

? ?if (!documentsDirectory) { ? ? ? ?NSLog(@"Documents directory not found!");

? ? ? ?return NO;

? ? ? }

? ?NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];

? ?return ([data writeToFile:appFile atomically:YES]);

}

NSData *applicationDataFromFile(NSString *fileName)

{ ? NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

? NSString *documentsDirectory = [paths objectAtIndex:0];

? NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];

? NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];

return myData;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乐纸,一起剝皮案震驚了整個(gè)濱河市衬廷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汽绢,老刑警劉巖吗跋,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宁昭,居然都是意外死亡跌宛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門积仗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)疆拘,“玉大人,你說(shuō)我怎么就攤上這事寂曹“テ” “怎么了回右?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)漱挚。 經(jīng)常有香客問(wèn)我翔烁,道長(zhǎng),這世上最難降的妖魔是什么旨涝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任蹬屹,我火速辦了婚禮,結(jié)果婚禮上白华,老公的妹妹穿的比我還像新娘哩治。我一直安慰自己,他們只是感情好衬鱼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布业筏。 她就那樣靜靜地躺著,像睡著了一般鸟赫。 火紅的嫁衣襯著肌膚如雪蒜胖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天抛蚤,我揣著相機(jī)與錄音台谢,去河邊找鬼。 笑死岁经,一個(gè)胖子當(dāng)著我的面吹牛朋沮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缀壤,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼樊拓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了塘慕?” 一聲冷哼從身側(cè)響起筋夏,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎图呢,沒(méi)想到半個(gè)月后条篷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛤织,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年赴叹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片指蚜。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乞巧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姚炕,到底是詐尸還是另有隱情摊欠,我是刑警寧澤丢烘,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布柱宦,位于F島的核電站些椒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掸刊。R本人自食惡果不足惜免糕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忧侧。 院中可真熱鬧石窑,春花似錦、人聲如沸蚓炬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肯夏。三九已至经宏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驯击,已是汗流浹背烁兰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徊都,地道東北人沪斟。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像暇矫,于是被迫代替她去往敵國(guó)和親主之。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • iphone沙箱模型的有四個(gè)文件夾李根,分別是什么杀餐,永久數(shù)據(jù)存儲(chǔ)一般放在什么位置,得到模擬器的路徑的簡(jiǎn)單方式是什么. ...
    Lydia_qing閱讀 18,910評(píng)論 0 17
  • 一朱巨、iOS中的沙盒機(jī)制 iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件史翘,這個(gè)獨(dú)立、封閉冀续、安全的空間琼讽,叫做沙盒。它一...
    1d5cb7cff98d閱讀 1,765評(píng)論 0 0
  • 一、iOS中的沙盒機(jī)制 ?iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件凭需,這個(gè)獨(dú)立问欠、封閉肝匆、安全的空間,叫做沙盒顺献。它...
    舒城8中閱讀 2,383評(píng)論 0 6
  • 一旗国、iOS中的沙盒機(jī)制 iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件,這個(gè)獨(dú)立注整、封閉能曾、安全的空間,叫做沙盒肿轨。它一...
    莫許閱讀 1,762評(píng)論 0 0
  • 一寿冕、iOS中的沙盒機(jī)制 iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件,這個(gè)獨(dú)立椒袍、封閉驼唱、安全的空間,叫做沙盒驹暑。它一...
    陸號(hào)閱讀 1,308評(píng)論 0 1