OC基礎(chǔ)—文件管理者

  • iOS中NSFileManager文件常用操作整合

  • 前言:"在Objective-C的編程過(guò)程當(dāng)中,常常會(huì)涉及到對(duì)文件的一些操作纠修,OC也提供了專業(yè)的類來(lái)進(jìn)行文件操作视哑,那就是NSFileManager類。通過(guò)NSFileManager類我們可以對(duì)文件進(jìn)行創(chuàng)建边翼、刪除须眷、移動(dòng)等操作竖瘾。"

1.NSFileManager

// 獲取電腦桌面的路徑(下面是本機(jī)路徑)
 NSString *desktopPath = @"/Users/hcios/Desktop";
 // 在桌面路徑后拼上想要?jiǎng)?chuàng)建的目錄名(如:test)
 NSString *directoryPath = [desktopPath stringByAppendingPathComponent:@"test"];
 
 // 創(chuàng)建一個(gè)默認(rèn)的fileManager
 NSFileManager *fileManager = [NSFileManager defaultManager];
 
 // fileManager在filePath路徑上創(chuàng)建一個(gè)目錄
 BOOL b = [fileManager createDirectoryAtPath:directoryPath withIntermediateDirectories:YES attributes:nil error:nil];
 NSLog(@"%@", b ? @"創(chuàng)建成功" : @"創(chuàng)建失敗");
 
 // 創(chuàng)建兩個(gè)文件路徑
 NSString *filePath1 = [directoryPath stringByAppendingPathComponent:@"test1.txt"];
 NSString *filePath2 = [directoryPath stringByAppendingPathComponent:@"test2.txt"];
 
 // 創(chuàng)建一個(gè)字符串,轉(zhuǎn)成NSData *類型花颗,寫入文件
 NSString *contents = @"write something to file...";
 NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
 
 // 判斷該路徑文件是否存在
 if (![fileManager fileExistsAtPath:filePath1]) {
 // 文件不存在則創(chuàng)建文件捕传,創(chuàng)建的同時(shí)寫入data
 [fileManager createFileAtPath:filePath1 contents:data attributes:nil];
 }
 if (![fileManager fileExistsAtPath:filePath2]) {
 [fileManager createFileAtPath:filePath2 contents:data attributes:nil];
 }
 
 // 兩種方式獲取一個(gè)目錄中的所有文件名(有時(shí)會(huì)獲取到隱藏文件)
 NSArray *fileArray = [fileManager subpathsAtPath:directoryPath];
 fileArray = [fileManager subpathsOfDirectoryAtPath:directoryPath error:nil];
 NSLog(@"fileArray = %@", fileArray);
 
 // 將directoryPath改為當(dāng)前路徑,fileManager會(huì)默認(rèn)在當(dāng)前路徑下操作
 [fileManager changeCurrentDirectoryPath:directoryPath];
 NSString *filePath3 = @"CurrentDirectoryPath.txt";
 if (![fileManager fileExistsAtPath:filePath3]) {
 [fileManager createFileAtPath:filePath3 contents:data attributes:nil];
 }
 fileArray = [fileManager subpathsAtPath:directoryPath];
 NSLog(@"fileArray = %@", fileArray);
 
 // 刪除文件
 [fileManager removeItemAtPath:filePath3 error:nil];
 fileArray = [fileManager subpathsAtPath:directoryPath];
 NSLog(@"after remove扩劝,fileArray = %@", fileArray);
 
 // 在當(dāng)前目錄下創(chuàng)建一個(gè)子目錄sub
 [fileManager createDirectoryAtPath:@"sub" withIntermediateDirectories:YES attributes:nil error:nil];
 fileArray = [fileManager subpathsAtPath:directoryPath];
 NSLog(@"add a sub directory庸论,fileArray = %@", fileArray);
 
 // 將test2.txt移動(dòng)到sub目錄中去
 [fileManager moveItemAtPath:filePath2 toPath:[@"sub" stringByAppendingPathComponent:@"test2.txt"] error:nil];
 fileArray = [fileManager subpathsAtPath:directoryPath];
 NSLog(@"after move,fileArray = %@", fileArray);
 
 
 // 將test1.txt復(fù)制一份到sub目錄中去
 [fileManager copyItemAtPath:filePath1 toPath:[@"sub" stringByAppendingPathComponent:@"test1.txt"] error:nil];
 fileArray = [fileManager subpathsAtPath:directoryPath];
 NSLog(@"after copy棒呛,fileArray = %@", fileArray);
 
 // 讀取文件中的內(nèi)容聂示,并將NSData *型數(shù)據(jù)轉(zhuǎn)成NSString *型數(shù)據(jù)
 NSData *getData = [fileManager contentsAtPath:filePath1];
 NSString *getString = [[NSString alloc] initWithData:getData encoding:NSUTF8StringEncoding];
 NSLog(@"getString = %@", getString);```

![圖片](http://upload-images.jianshu.io/upload_images/1429890-cbf2f30e82f976ca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
***

#2.NSBundle
>NSBundle 類,直接繼承 NSObject 類簇秒。 這個(gè)類的對(duì)象鱼喉,代表了 app 中代碼和資源的文件在文件系統(tǒng)里所在的位置,通俗的說(shuō)趋观,就是定位了程序使用的資源(代碼扛禽,圖形,音樂(lè)等數(shù)據(jù))在文件系統(tǒng)里的位置皱坛,并可以動(dòng)態(tài)的加載编曼、或卸載掉可執(zhí)行代碼。
bundle在英文中的解釋是“捆剩辟、束”的意思掐场,那么我們可以將NSBundle理解為是將程序的所有資源捆在一起的對(duì)象,我們的程序是一個(gè)bundle贩猎。 在Finder中熊户,一個(gè)應(yīng)用程序看上去和其他文件沒(méi)有什么區(qū)別。但是實(shí)際上它是一個(gè)包含了nib文件,編譯代碼,以及其他資源的目錄. 我們把這個(gè)目錄叫做程序的main bundle融欧,在 Xcode 里敏弃,使用應(yīng)用程序、框架噪馏、或者插件的時(shí)候麦到,Xcode 會(huì)生成對(duì)應(yīng)的資源的目錄包。
對(duì)于有GUI的應(yīng)用程序來(lái)說(shuō)欠肾,我們可以通過(guò)NSBundle來(lái)獲取資源的路徑瓶颠,但是對(duì)于沒(méi)有GUI的程序(比如OS X的控制臺(tái)程序),就不能通過(guò)NSBundle來(lái)獲取資源的路徑刺桃。
+ (NSBundle *)mainBundle;
上面的mainBundle方法返回一個(gè) NSBundle類的對(duì)象粹淋,這個(gè)對(duì)象就是一個(gè)絕對(duì)路徑,這個(gè)路徑保存的是當(dāng)前可執(zhí)行的應(yīng)用程序根目錄路徑瑟慈,應(yīng)用程序在編譯之后桃移, 資源文件就直接復(fù)制到了根目錄下。然后我們根據(jù)資源文件的名稱和類型就可以獲取到它們葛碧,例如下面獲取一張圖片:

// 獲取應(yīng)用程序的main bundle
NSBundle *mainBundle = [NSBundle mainBundle];
// 獲取圖片的路徑(圖片為test.jpg)
NSString *imagePath = [mainBundle pathForResource:@"test" ofType:@"jpg"];
// 根據(jù)圖片的路徑獲取圖片
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
// 將圖片放入imageView中
self.imageView.image = image;

***

# 3.NSURL

// 將網(wǎng)絡(luò)上一張圖片的url用字符串格式保存
NSString *URLString = @"http://7xow65.com1.z0.glb.clouddn.com/wp-content/uploads/2016/03/cefc1e178a82b901adddeaae738da9773912ef3f.jpg";
// 將字符串格式的url轉(zhuǎn)換成OC中 NSURL *類型的對(duì)象
NSURL *url=[NSURL URLWithString:URLString];
// 獲取url地址中的圖片借杰,保存為NSData *類型的對(duì)象
NSData *data = [NSData dataWithContentsOfURL:url];
// 將data轉(zhuǎn)換為UIImage *類型的對(duì)象并放入imageView中
self.imageView.image = [UIImage imageWithData:data];

// 獲取url中各種參數(shù)
NSLog(@"Scheme: %@", [url scheme]);
NSLog(@"Host: %@", [url host]);
NSLog(@"Port: %@", [url port]);
NSLog(@"Path: %@", [url path]);
NSLog(@"Relative path: %@", [url relativePath]);
NSLog(@"Path components as array: %@", [url pathComponents]);
NSLog(@"Parameter string: %@", [url parameterString]);
NSLog(@"Query: %@", [url query]);
NSLog(@"Fragment: %@", [url fragment]);
NSLog(@"User: %@", [url user]);
NSLog(@"Password: %@", [url password]);```


圖片

  • github

| 項(xiàng)目 | 簡(jiǎn)介 |
| : | : |
| MGDS_Swif | 逗視視頻直播 |
| MGMiaoBo | 喵播視頻直播 |
| MGDYZB | 斗魚(yú)視頻直播 |
| MGDemo | n多小功能合集 |
| MGBaisi | 高度仿寫百思 |
| MGSinaWeibo | 高度仿寫Sina |
| MGLoveFreshBeen | 一款電商App |
| MGWeChat | 小部分實(shí)現(xiàn)微信功能 |
| MGTrasitionPractice | 自定義轉(zhuǎn)場(chǎng)練習(xí) |
| DBFMDemo | 豆瓣電臺(tái) |
| MGPlayer | 一個(gè)播放視頻的Demo |
| MGCollectionView | 環(huán)形圖片排布以及花瓣形排布 |
| MGPuBuLiuDemo | 瀑布流--商品展 |
| MGSlideViewDemo | 一個(gè)簡(jiǎn)單點(diǎn)的側(cè)滑效果,仿QQ側(cè)滑 |
| MyResume | 一個(gè)展示自己個(gè)人簡(jiǎn)歷的Demo |
| GoodBookDemo | 好書 |

Snip20161026_15.png

Snip20161026_16.png

Snip20161026_35.png
逗視介紹1.gif

逗視介紹2.gif

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乳绕,一起剝皮案震驚了整個(gè)濱河市绞惦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洋措,老刑警劉巖济蝉,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異菠发,居然都是意外死亡王滤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門雷酪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)淑仆,“玉大人,你說(shuō)我怎么就攤上這事哥力≌岬。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵吩跋,是天一觀的道長(zhǎng)寞射。 經(jīng)常有香客問(wèn)我,道長(zhǎng)锌钮,這世上最難降的妖魔是什么桥温? 我笑而不...
    開(kāi)封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮梁丘,結(jié)果婚禮上侵浸,老公的妹妹穿的比我還像新娘旺韭。我一直安慰自己,他們只是感情好掏觉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布区端。 她就那樣靜靜地躺著,像睡著了一般澳腹。 火紅的嫁衣襯著肌膚如雪织盼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天酱塔,我揣著相機(jī)與錄音沥邻,去河邊找鬼。 笑死羊娃,一個(gè)胖子當(dāng)著我的面吹牛唐全,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迁沫,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼芦瘾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了集畅?” 一聲冷哼從身側(cè)響起近弟,我...
    開(kāi)封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挺智,沒(méi)想到半個(gè)月后祷愉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赦颇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年试幽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了急迂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愉镰。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纵装,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扇苞,到底是詐尸還是另有隱情欺殿,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布鳖敷,位于F島的核電站脖苏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏定踱。R本人自食惡果不足惜棍潘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亦歉,春花似錦恤浪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)敢课。三九已至阶祭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間直秆,已是汗流浹背濒募。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留圾结,地道東北人瑰剃。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像筝野,于是被迫代替她去往敵國(guó)和親晌姚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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

  • 今天就本周作業(yè)的讀取txt文件查找了的一些方法歇竟,如下: //讀取文本內(nèi)容NSError *error;NSStri...
    霏誠(chéng)拜咬o閱讀 612評(píng)論 0 0
  • 在Objective-C的編程過(guò)程當(dāng)中挥唠,常常會(huì)涉及到對(duì)文件的一些操作,OC也提供了專業(yè)的類來(lái)進(jìn)行文件操作焕议,那就是N...
    趙亦晨閱讀 1,371評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理宝磨,服務(wù)發(fā)現(xiàn),斷路器盅安,智...
    卡卡羅2017閱讀 134,662評(píng)論 18 139
  • 框架捆綁 框架是封裝動(dòng)態(tài)共享庫(kù)和支持該庫(kù)所需的資源文件的分層目錄唤锉。框架比典型的動(dòng)態(tài)共享庫(kù)提供了一些優(yōu)勢(shì)别瞭,因?yàn)樗鼈優(yōu)?..
    nicedayCoco閱讀 1,616評(píng)論 0 2
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666閱讀 1,387評(píng)論 0 6