NSFileManager文件和文件夾的操作

  • 前面我在介紹iOS應(yīng)用存儲(chǔ)數(shù)據(jù)的常用的方式之plist和歸檔的時(shí)候,我們一般存儲(chǔ)數(shù)據(jù)或者寫(xiě)入數(shù)據(jù)都要建立一個(gè)文件或者文件夾,所以NSFileManager在我們?nèi)粘i_(kāi)發(fā)中會(huì)經(jīng)常使用到,這里稍微介紹一下

  • 在日常開(kāi)發(fā)過(guò)程中,我們會(huì)經(jīng)常對(duì)數(shù)據(jù)進(jìn)行操作,那么這就會(huì)使用到今天我要介紹的NSFileManager的類,這個(gè)對(duì)類是文件和文件夾的操作

  • NSFileManager使用了單例模式

    • 使用defaultManager方法可以獲得那個(gè)單例對(duì)象 objc ``[NSFileManager defaultManager]

NSFileManager用法

1.文件/文件夾判斷

1 - 判斷文件或者文件夾是否存在 - (BOOL)fileExistsAtPath:(NSString *)path

NSFileManager *manager = [NSFileManager defaultManager];
    NSString *path = @"/Users/it001/Desktop/timg.jpeg";
    if ([manager fileExistsAtPath:path]) {
        NSLog(@"存在");
    }else{
        NSLog(@"不存在");
    }

2 - 判斷文件或者文件夾是否存在,isDirectory代表是否為文件夾
- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory;

 NSFileManager *manager = [NSFileManager defaultManager];
    NSString *path = @"/Users/it001/Desktop/100";
    //
    BOOL isdir = NO;
    //isDirectory 傳入的是一個(gè)內(nèi)存地址,如果這個(gè)文件夾真是存在就是yes,如果不存在就是NO
    BOOL isSuc = [manager fileExistsAtPath:path isDirectory:&isdir];
    
    NSLog(@"%@---%@",isSuc == YES?@"yes":@"NO",isdir == YES ?@"yes":@"no");
    
    打印結(jié)果:yes----yes

3- 下面的方法和上面的是一樣 不做例子

  • - (BOOL)isReadableFileAtPath:(NSString *)path;

    • path這個(gè)文件\文件夾是否可讀
  • - (BOOL)isWritableFileAtPath:(NSString *)path;

    • path這個(gè)文件\文件夾是否可寫(xiě)
    • 系統(tǒng)目錄不允許寫(xiě)入
  • - (BOOL)isDeletableFileAtPath:(NSString *)path;

    • path這個(gè)文件\文件夾是否可刪除
    • 系統(tǒng)目錄不允許刪除

2.文件的訪問(wèn)

1- 獲取文件/文件夾的屬性(比如:名稱,創(chuàng)建日期,大小,修改時(shí)間)
- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error;


  NSFileManager *manager = [NSFileManager defaultManager];
     NSString *path = @"/Users/it001/Desktop/timg.jpeg";
    NSDictionary *fileInfo = [manager attributesOfItemAtPath:path error:nil];
    NSLog(@"%@",fileInfo);
    
    //打印結(jié)果
    
    {
    //創(chuàng)建的日期
    NSFileCreationDate = "2019-02-12 14:39:02 +0000";
    //屬性字典對(duì)象
    NSFileExtendedAttributes =     {
        "com.apple.lastuseddate#PS" = <8162885c 00000000 64cd143b 00000000>;
        "com.apple.metadata:_kMDItemUserTags" = <62706c69 73743030 a0080000 00000000 01010000 00000000 00010000 00000000 00000000 00000000 0009>;
        "com.apple.metadata:kMDItemWhereFroms" = 03f8>;
        "com.apple.quarantine" = <30303833 3b356336 32646138 623b4368 726f6d65 3b434446 39344535 442d4330 43432d34 3844312d 38463034 2d453234 36374430 38414131 45>;
    };
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 20;
    NSFileGroupOwnerAccountName = staff;
    //修改時(shí)間
    NSFileModificationDate = "2019-02-12 14:39:02 +0000";
    NSFileOwnerAccountID = 501;
    NSFilePosixPermissions = 420;
    NSFileReferenceCount = 1;
    //文件大小
    NSFileSize = 49881;
    NSFileSystemFileNumber = 8595530012;
    NSFileSystemNumber = 16777220;
    NSFileType = NSFileTypeRegular;


2-獲取文件內(nèi)存 NSData數(shù)據(jù)
- (NSData *)contentsAtPath:(NSString *)path;
+ 獲得文件內(nèi)容


    NSFileManager *manager = [NSFileManager defaultManager];
     NSString *path = @"/Users/lijunchao/Desktop/timg.jpeg";
 
    NSData *contents = [manager contentsAtPath:path];
    
    NSLog(@"%@",contents);
  

3 - 獲取當(dāng)前path的所有文件(包含子文件夾,但是不會(huì)包含子文件夾里面的內(nèi)容)
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError *)error;

01-@2x.png

    NSFileManager *manager = [NSFileManager defaultManager];
     NSString *path = @"/Users/lijunchao/Desktop/100";
  
   NSArray *contents = [manager contentsOfDirectoryAtPath:path error:nil];
    
    NSLog(@"%@",contents);


 (
    abc, //abc子文件夾,沒(méi)有子文件夾里面的內(nèi)容
    ".DS_Store",
    "IMG_1436.PNG",
    "31.txt"
)

4 - 獲取所有文件或者文件夾
- (NSArray *)subpathsAtPath:(NSString *)path;
- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError *)error;

02.png

   NSFileManager *manager = [NSFileManager defaultManager];
   NSString *path = @"/Users/lijunchao/Desktop/100";
  
   NSArray *contents = [manager subpathsAtPath:path];
    NSLog(@"%@",contents);
    
    //打印結(jié)果:獲取到子文件夾里面的內(nèi)容

(
    abc,
    "abc/KVC\U548cKVO\U7684\U4ecb\U7ecd.md",
    ".DS_Store",
    "IMG_1436.PNG",
    "31.txt"
)

3.NSFileManager的文件操作

1- 文件的拷貝
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;


  NSFileManager *manager = [NSFileManager defaultManager];
    //需要注意是路徑,在copy的到toPath的時(shí)候文件是不存在的,
  NSString *path = @"/Users/it001/Desktop/timg.jpeg";
  NSString *toPath = @"/Users/it001/Desktop/100/timg.jpeg";
  
  NSError *error = nil;
  BOOL isSuc = [manager copyItemAtPath:path toPath:toPath error:&error];
    
  NSLog(@"%@",error.description);
    
    
    
 NSLog(@"%@",(isSuc == YES?@"copy成功":@"失敗"));

03.png

2- 文件的移動(dòng)(剪切)
- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;

NSFileManager *manager = [NSFileManager defaultManager];

      NSString *path = @"/Users/it001/Desktop/timg.jpeg";
    NSString *toPath = @"/Users/it001/Desktop/100/timg.jpeg";

    BOOL isSuc = [manager moveItemAtPath:path toPath:toPath error:nil];
    
    NSLog(@"%@",(isSuc == YES?@"copy成功":@"失敗"));


03.png

3- 文件的刪除
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;

  NSFileManager *manager = [NSFileManager defaultManager];
   NSString *toPath = @"/Users/it001/Desktop/100/timg.jpeg";
   BOOL isSuc = [manager removeItemAtPath:toPath error:nil];
    NSLog(@"%@",(isSuc == YES?@"刪除成功":@"失敗"));

04.png

4- 文件夾的創(chuàng)建
- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error;
創(chuàng)建文件夾(createIntermediates為YES代表自動(dòng)創(chuàng)建中間的文件夾)

 NSFileManager *manager = [NSFileManager defaultManager];

    NSString *toPath = @"/Users/it001/Desktop/100/CC/timg.jpeg";

    BOOL isSuc = [manager createDirectoryAtPath:toPath withIntermediateDirectories:YES attributes:nil error:nil];
    
   NSLog(@"%@",(isSuc == YES?@"創(chuàng)建成功":@"失敗"));


05.png

5- 文件的創(chuàng)建
- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
創(chuàng)建文件(NSData是用來(lái)存儲(chǔ)二進(jìn)制字節(jié)數(shù)據(jù)的)

 NSString *str = @"CC";
    NSData  *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    NSFileManager *manager = [NSFileManager defaultManager];
    BOOL isSuc = [manager createFileAtPath:@"/Users/it001/Desktop/100/abc.txt" contents:data attributes:nil];
     NSLog(@"%@",(isSuc == YES?@"創(chuàng)建成功":@"失敗"));
06.png
喜歡的給個(gè)點(diǎn)個(gè)??繼續(xù)努力
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市奕谭,隨后出現(xiàn)的幾起案子春寿,更是在濱河造成了極大的恐慌业汰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件动分,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)芽偏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弦讽,“玉大人污尉,你說(shuō)我怎么就攤上這事⊥” “怎么了被碗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仿村。 經(jīng)常有香客問(wèn)我锐朴,道長(zhǎng),這世上最難降的妖魔是什么蔼囊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任焚志,我火速辦了婚禮,結(jié)果婚禮上畏鼓,老公的妹妹穿的比我還像新娘酱酬。我一直安慰自己,他們只是感情好云矫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布膳沽。 她就那樣靜靜地躺著,像睡著了一般泼差。 火紅的嫁衣襯著肌膚如雪贵少。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天堆缘,我揣著相機(jī)與錄音滔灶,去河邊找鬼。 笑死吼肥,一個(gè)胖子當(dāng)著我的面吹牛录平,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缀皱,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼斗这,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了啤斗?” 一聲冷哼從身側(cè)響起表箭,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钮莲,沒(méi)想到半個(gè)月后免钻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體彼水,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年极舔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凤覆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拆魏,死狀恐怖盯桦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渤刃,我是刑警寧澤拥峦,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站卖子,受9級(jí)特大地震影響事镣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揪胃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氛琢。 院中可真熱鬧喊递,春花似錦、人聲如沸阳似。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撮奏。三九已至俏讹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畜吊,已是汗流浹背泽疆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玲献,地道東北人殉疼。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捌年,于是被迫代替她去往敵國(guó)和親瓢娜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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

  • iOS開(kāi)發(fā)-文件管理(一) 一礼预、iOS中的沙盒機(jī)制 iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件眠砾,這個(gè)獨(dú)立、封閉...
    MacShare閱讀 1,800評(píng)論 0 6
  • 一托酸、iOS中的沙盒機(jī)制 iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件褒颈,這個(gè)獨(dú)立柒巫、封閉、安全的空間哈肖,叫做沙盒吻育。它一...
    1d5cb7cff98d閱讀 1,771評(píng)論 0 0
  • 大綱 26.Protocol-協(xié)議 27.delegate-代理 28.Foundation框架介紹 29.NSS...
    天天想念閱讀 1,361評(píng)論 0 2
  • 今天開(kāi)始分析YYCache 包含的文件類 YYCache YYMemoryCache YYDiskCache YY...
    充滿活力的早晨閱讀 795評(píng)論 4 1
  • 一個(gè)人怎么可能吃遍世上所有的食物呢,所以也就談不上“最”好吃的是什么淤井,因個(gè)人口味不同布疼,你吃著好吃的她吃著未...
    黑龍江冷月閱讀 872評(píng)論 2 7