《Objective-c》Foundation框架 -(練習:計算整個文件夾的代碼行數)

 

練習:計算整個文件夾的代碼行數ios

//
//  main.m
//  02-計算整個文件夾的代碼行數
//
// Created by unique on 15-1-26. // Copyright (c) 2015年 unique. All rights reserved. // 
#import <Foundation/Foundation.h> NSUInteger codeLines(NSString *path)
{  // 1.得到文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager]; // 2.判斷path是文件夾仍是文件路徑
    BOOL dir = NO; BOOL exist = [mgr fileExistsAtPath:path isDirectory: &dir]; // 3.若是文件路徑不存在,直接返回0
    if(!exist) { NSLog(@"這個路徑不存在!!!!!"); return 0; } // 4.若是路徑存在,繼續下面的執行 // 1> 若是dir == 1 ,說明路徑是一個文件夾
    if (dir) { // NSLog(@"這是一個文件夾!"); // 2> 若是是文件夾,就獲取文件夾裏面的全部東西(包括子文件夾和文件)
        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; int count = 0; // 3> 遍歷數組中的全部文件及文件名
        for (NSString *fileName in array) { NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, fileName]; count += codeLines(fullPath); }  
        return count; } // 5.若是是個文件
    else {  // 1> 對文件進行過濾  // * 獲取文件的拓展名(沒有點)並轉換成小寫
        NSString *extension = [[path pathExtension] lowercaseString]; // * 若是不是.h .m .c文件就返回0
        if (![extension isEqualToString:@"h"] && ![extension isEqualToString:@"m"] && ![extension isEqualToString:@"c"]) { return 0; } // *若是是.h .m .c文件就執行下面的代碼 // 1> 加載文件內容
        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; // 2> 將文件內容分割成每一行
        NSArray *array = [content componentsSeparatedByString:@"\n"]; NSRange range = [path rangeOfString:@"/Users/unique/Desktop/ios學習/"];
        
 NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; NSLog(@"%@--%ld", str, array.count); return array.count; } } int main(int argc, const char * argv[]) { NSUInteger count = codeLines(@"/Users/unique/Desktop/ios學習"); NSLog(@"%ld", count); return 0; }
相關文章
相關標籤/搜索