Objective-C NSFileManager的使用 各種文件操作

寫在前面
弄了下個(gè)人站...防止內(nèi)容再次被鎖定...所有東西都在這里面
welcome~
個(gè)人博客

所有方法

都很簡(jiǎn)單跨释,大概記錄一下膛锭,寫文件并沒(méi)有是追加的方式而是簡(jiǎn)單的覆蓋

//創(chuàng)建文件夾
- (BOOL)creatDir:(NSString*)newDirName at:(NSString*)dirName ;
//創(chuàng)建文件
- (BOOL)creatFile:(NSString*)fileName at:(NSString*)dirName ;
//寫文件-字符串
- (BOOL)writeString:(NSString*)string inFilePath:(NSString*)filePath;
//寫文件-字典
- (BOOL)writeDict:(NSDictionary*)dict inFilePath:(NSString*)filePath ;
//寫文件-數(shù)組
- (BOOL)writeArray:(NSArray*)array inFilePath:(NSString*)filePath ;
//讀文件 
- (NSString*)readFileAt:(NSString*)filePath;
//獲取某個(gè)目錄下所有文件
- (NSArray*)getAllFileAtDir:(NSString*)dirPath ;
//判斷文件是否存在
- (BOOL)fileIsExistAtPath:(NSString*)filePath ;
//計(jì)算某個(gè)文件大小
- (unsigned long long)computerFileSizeAtPath:(NSString*)filePath;
//計(jì)算整個(gè)文件夾中所有文件大小
- (unsigned long long)computerDirSizeAtPath:(NSString*)dirPath;
//刪除文件
- (BOOL)removeFileAtPath:(NSString*)filePath;
//移動(dòng)文件
- (BOOL)moveFile:(NSString*)fileName fromPath:(NSString*)fromPath toPath:(NSString*)toPath;

具體實(shí)現(xiàn)

初始化一下NSFileManager 并獲取根路徑
主要是加了一些判斷岂座,代碼不是很精簡(jiǎn) 不要笑我太示。

- (instancetype)init {
    self = [super init];
    if (self) {
        self.homePath = NSHomeDirectory();
        self.manager = [NSFileManager defaultManager];
        NSLog(@"根路徑地址:%@",self.homePath);
    }
    return self;
}
//創(chuàng)建文件夾
- (BOOL)creatDir:(NSString*)newDirName at:(NSString*)dirName {
    NSString *path = [self.homePath stringByAppendingString:dirName];
    NSString *filePath = [path stringByAppendingPathComponent:newDirName];
    if ([self.manager fileExistsAtPath:filePath]) {
        NSLog( @"創(chuàng)建失敗镀钓,目錄已存在");
    }else {
        BOOL isCreate = [self.manager createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:nil];
        if (isCreate) {
            NSLog( @"創(chuàng)建成功");
            return YES;
        } else {
            NSLog( @"創(chuàng)建失敗买乃,請(qǐng)檢查路徑");
            return NO;
        }
    }
    return NO;
}
//創(chuàng)建文件
- (BOOL)creatFile:(NSString*)fileName at:(NSString*)dirName {
    //目錄位置
    NSString *dirPath = [self.homePath stringByAppendingString:dirName];
    //文件位置
    NSString *filePath = [dirPath stringByAppendingPathComponent:fileName];
    BOOL isDir = NO;
    BOOL isFileExist = [self.manager fileExistsAtPath:dirPath isDirectory:&isDir];
    //目錄是否存在
    if (!(isFileExist && isDir)) {
        NSLog(@"目錄不存在,請(qǐng)先創(chuàng)建目錄");
        return NO;
    }
    //文件是否存在
    if (![self.manager fileExistsAtPath:filePath]) {
        BOOL isCreate = [self.manager createFileAtPath:filePath contents:nil attributes:nil];
        if (isCreate) {
            NSLog(@"創(chuàng)建成功");
            return YES;
        } else {
            NSLog(@"創(chuàng)建失敗");
            return NO;
        }
    }
    else {
        NSLog(@"創(chuàng)建失敗,文件已存在");
        return NO;
    }
    return NO;
}
//寫文件-字符串
- (BOOL)writeString:(NSString*)string inFilePath:(NSString*)filePath{
    NSString *path = [self.homePath stringByAppendingString:filePath];
    BOOL isFileExist = [self.manager fileExistsAtPath:path];
    if (isFileExist) {
        BOOL isWrite = [string writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
        if (isWrite) {
            NSLog(@"寫入成功");
            return YES;
        } else {
            NSLog( @"寫入失敗");
            return NO;
        }
    }else{
        NSLog(@"文件不存在,請(qǐng)先創(chuàng)建文件");
        return NO;
    }
    return NO;
}
//寫文件-字典
- (BOOL)writeDict:(NSDictionary*)dict inFilePath:(NSString*)filePath {
    NSString *path = [self.homePath stringByAppendingString:filePath];
    BOOL isFileExist = [self.manager fileExistsAtPath:path];
    if (isFileExist) {
        BOOL isWrite = [dict writeToFile:path atomically:YES];
        if (isWrite) {
            NSLog(@"寫入成功");
            return YES;

        } else {
            NSLog(@"寫入失敗");
            return NO;

        }
    }else{
        NSLog(@"文件不存在,請(qǐng)先創(chuàng)建文件");
        return NO;

    }
    return NO;

}
//寫文件-數(shù)組
- (BOOL)writeArray:(NSArray*)array inFilePath:(NSString*)filePath {
    NSString *path = [self.homePath stringByAppendingString:filePath];
    BOOL isFileExist = [self.manager fileExistsAtPath:path];
    if (isFileExist) {
        BOOL isWrite = [array writeToFile:path atomically:YES];
        if (isWrite) {
            NSLog(@"寫入成功");
            return YES;

        } else {
            NSLog(@"寫入失敗");
            return NO;
        }
    }else{
        NSLog(@"文件不存在,請(qǐng)先創(chuàng)建文件");
        return NO;
    }
    return NO;
}
//讀文件
- (NSString*)readFileAt:(NSString*)filePath{
    NSString *path = [self.homePath stringByAppendingString:filePath];
    NSData *data = [self.manager contentsAtPath:path];
    NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    return result;
}
//獲取某個(gè)目錄下所有文件
- (NSArray*)getAllFileAtDir:(NSString*)dirPath {
    NSString *path = [self.homePath stringByAppendingString:dirPath];
    NSArray *dirArray = [self.manager contentsOfDirectoryAtPath:path error:nil];
    return dirArray;
}
//判斷文件是否存在
- (BOOL)fileIsExistAtPath:(NSString*)filePath {
    NSString *path = [self.homePath stringByAppendingString:filePath];
    BOOL isFileExist = [self.manager fileExistsAtPath:path];
    if (isFileExist) {
        NSLog(@"文件存在");
        return YES;

    }  else {
        NSLog(@"文件不存在");
        return NO;

    }
    return NO;
}
//計(jì)算某個(gè)文件大小 單位是字節(jié)
- (unsigned long long)computerFileSizeAtPath:(NSString*)filePath {
    NSString *path = [self.homePath stringByAppendingString:filePath];
    BOOL isDir;
    BOOL isFile = [self.manager fileExistsAtPath:path isDirectory:&isDir];
    if (!isDir) {
        if (!isFile) {
            NSLog(@"文件不存在");
            return 0;

        }else {
            unsigned long long fileSize = [self.manager attributesOfItemAtPath:path error:nil].fileSize;
            return fileSize;
        }
    }  else {
        NSLog( @"該文件是一個(gè)目錄");
        return 0;
    }
    return 0;
}
//計(jì)算整個(gè)文件夾中所有文件大小
- (unsigned long long)computerDirSizeAtPath:(NSString*)dirPath {
    NSString *path = [self.homePath stringByAppendingString:dirPath];
    BOOL isExist = [self.manager fileExistsAtPath:path];
    if (isExist) {
        
        NSEnumerator *childFilesEnumerator = [[self.manager subpathsAtPath:path] objectEnumerator];
        NSString* fileName;
        long long folderSize = 0;
        while ((fileName = [childFilesEnumerator nextObject]) != nil){
            NSString* fileAbsolutePath = [path stringByAppendingPathComponent:fileName];
            folderSize += [self.manager attributesOfItemAtPath:fileAbsolutePath error:nil].fileSize;
        }
        return folderSize;
        
    } else {
        NSLog(@"目錄不存在");
        return 0;
    }
    return 0;
}
//刪除文件
- (BOOL)removeFileAtPath:(NSString*)filePath {
    NSString *path = [self.homePath stringByAppendingString:filePath];
    if ([self.manager fileExistsAtPath:path]) {
        BOOL isRemove = [self.manager removeItemAtPath:path error:nil];
        if (!isRemove) {
            NSLog(@"移除失敗");
            return NO;
        } else {
            NSLog(@"移除成功");
            return YES;
        }
    } else {
        NSLog(@"文件不存在");
        return NO;
    }  
    return NO;
}
//移動(dòng)文件
- (BOOL)moveFile:(NSString*)fileName fromPath:(NSString*)fromPath toPath:(NSString*)toPath {
    NSString *fPath = [self.homePath stringByAppendingString:fromPath];
    NSString *src = [fPath stringByAppendingPathComponent:fileName];
    NSString *tPath = [self.homePath stringByAppendingString:toPath];
    NSString *des = [tPath stringByAppendingPathComponent:fileName];
    
    if (![self.manager fileExistsAtPath:src]) {
        NSLog(@"文件不存在");
        return NO;
    }else {
        if (![self.manager fileExistsAtPath:tPath]) {
            NSLog(@"目標(biāo)路徑不存在");
            return NO;
        } else {
            BOOL move = [self.manager moveItemAtPath:src toPath:des error:nil];
            if (move) {
                NSLog( @"移動(dòng)成功");
                return YES;
            } else {
                NSLog(@"移動(dòng)失敗");
                return NO;
            }
        }
    }
    return NO;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝙搔,一起剝皮案震驚了整個(gè)濱河市缕溉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吃型,老刑警劉巖证鸥,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異勤晚,居然都是意外死亡枉层,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門赐写,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸟蜡,“玉大人,你說(shuō)我怎么就攤上這事挺邀∪嗤” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵端铛,是天一觀的道長(zhǎng)泣矛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)禾蚕,這世上最難降的妖魔是什么您朽? 我笑而不...
    開(kāi)封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮换淆,結(jié)果婚禮上哗总,老公的妹妹穿的比我還像新娘。我一直安慰自己倍试,他們只是感情好讯屈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著易猫,像睡著了一般耻煤。 火紅的嫁衣襯著肌膚如雪具壮。 梳的紋絲不亂的頭發(fā)上准颓,一...
    開(kāi)封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天哈蝇,我揣著相機(jī)與錄音,去河邊找鬼攘已。 笑死炮赦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的样勃。 我是一名探鬼主播吠勘,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼峡眶!你這毒婦竟也來(lái)了剧防?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辫樱,失蹤者是張志新(化名)和其女友劉穎峭拘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體狮暑,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸡挠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搬男。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拣展。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缔逛,靈堂內(nèi)的尸體忽然破棺而出备埃,到底是詐尸還是另有隱情,我是刑警寧澤褐奴,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布按脚,位于F島的核電站,受9級(jí)特大地震影響歉糜,放射性物質(zhì)發(fā)生泄漏乘寒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一匪补、第九天 我趴在偏房一處隱蔽的房頂上張望吼鳞。 院中可真熱鬧,春花似錦蜡秽、人聲如沸代赁。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)竿滨。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間于游,已是汗流浹背毁葱。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贰剥,地道東北人倾剿。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蚌成,于是被迫代替她去往敵國(guó)和親前痘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

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