OBject-C加强 代码总行数计算-项目实现

/*

 考察NSString , NSArray的使用

 NSFileManager

 返回值 int : 代码行数

 */


#import


// 计算单个文件代码行数

/*

 path : 文件的全路径(可能是文件夹路径 / 也可能是文件)

 返回值 int : 代码行数

 */


int codeLineCount(NSString *path)

{

    // 1.获得文件管理者

    NSFileManager *mgr = [NSFileManagerdefaultManager];

    

    // 2. 判断path是文件夹还是文件路径

    BOOL dir = NO//  标记是否为文件夹

    

    // 这个路径是否存在

    BOOL  exist = [mgr fileExistsAtPath:path isDirectory:&dir];

    

    // 3 . 如果不存在 , 直接返回 0

    if ( !exist ) return 0;

    

    // 4 . 说明路径存在

    if (dir)

    { // 是文件夹

        //  NSLog(@"是个文件夹");

        

        // 装着当前文件夹这面的所有内容 (文件夹 , 文件)

        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];

        

//        NSLog(@"%@",array);

        

        int count = 0;

        

        // 遍历数组中的所有文件 (夹) 名

        for (NSString *filenamein array)

        {   

            // 子文件 (夹) 的全路径

           NSString *fullPath = [NSStringstringWithFormat:@"%@/%@",path,filename];

            

//            NSLog(@"%@",fullPath);

            

            // 累加每个子路径的总行数

            count += codeLineCount(fullPath);

        }

        return count;

    }

    else 

    { // 文件

        

        // 1 . 判断文件的拓展名 ( 忽略大小写 )

        NSString *extension = [[path pathExtension] lowercaseString];

        if( ! [extension isEqualToString:@"h"] && [extension isEqualToString:@"m" ] && [extension isEqualToString:@"c"])

        {

            // 文件拓展名不是.h, 也不是.m ,而且也不是.c

            return  0;

        }

        

//        NSLog(@"%@",extension);

        

        // 2.加载文件内容

        NSString *content = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncodingerror:nil];

        

        //  NSLog(@"%@",content);

        

        // 3.将文件切割为每一行

        NSArray *array = [content componentsSeparatedByString:@"\n"];

        

        NSRange range = [pathrangeOfString:@"/Users/yahua/Desktop/Work/"];

        

        // 将冗余的路径range 不显示在输出文件中

        NSString *str = [pathstringByReplacingCharactersInRange:range withString:@""];

        

        NSLog(@"%@ - %ld",str , array.count);

        

        return array.count;

    }

}


int main(int argc,const char * argv[]) {

    

    //codeLineCount输入你文件 (夹) 路径

     int count =codeLineCount(@"/Users/yahua/Desktop/Work/");

    

    NSLog(@"%d",count);

    

    return 0;

}


你可能感兴趣的:(IOS,Object-C,学习笔记)