首页 > 代码库 > 黑马程序员___综合练习 计算代码总行数

黑马程序员___综合练习 计算代码总行数

-Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

计算代码总行数

 

思路:1.判断给出的路径是文件还是文件夹

            2.如果是文件,用\n把文件分割成一个数组,计算数组元素个数就可以得出文件总行数

      如果是文件夹,获得文件夹的所有内容,包括文件和文件夹,然后有递归算出文件夹所有代码的总行数 

 

考察内容:NSString、NSArray、NSFileManager的使用

 

代码演示:

#import <Foundation/Foundation.h>NSUInteger codeLineCount(NSString *path);int main(){        NSUInteger count = codeLineCount(@"/Users/fengze/Desktop");    NSLog(@"%ld",count);    return 0;}NSUInteger codeLineCount(NSString *path){    //1.获取文件管理者   NSFileManager *mgr = [NSFileManager defaultManager];        //2.标记是否为文件夹   BOOL dir = NO;        //标记这个路径是否存在    BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];        //3.如果不存在,直接返回0    if (!exist)    {        NSLog(@"文件不存在!!!");        return 0;    }        if (dir)    {//文件夹        //获得当前文件夹path下面的所有内容(文件夹、文件)        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];                //定义一个变量保存path中所有文件的总行数        int count = 0;        // 遍历数组中的所有文件(夹)名        for(NSString *fileName in array)        {            //获得子文件(夹)的全路径            NSString *fullPath = [NSString stringWithFormat:@"%@%@",path,fileName];            //累加每个子路径的总行数            count += codeLineCount(fullPath);        }        return count;    }    else    {//文件               //判断文件的拓展名(忽略大小写)        NSString *extension = [[path pathExtension] lowercaseString];        if(!([extension isEqualToString:@"h"]             &&[extension isEqualToString:@"c"]             &&[extension isEqualToString:@"m"]))        {            //文件拓展名不是h,c,m            return  0;        }         // 加载文件内容        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];        //将文件内容切割为每一行        NSArray *array = [content componentsSeparatedByString:@"\n"];                //删除文件路径前面的/Users/fengze/Desktop/练习/        NSRange range = [path rangeOfString:@"/Users/fengze/"];        NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];                //打印文件路径和行数        NSLog(@"%@ - %ld",str,array.count);        return array.count;                  }}

 

黑马程序员___综合练习 计算代码总行数