码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员---工具类---OC自定义函数---计算当前路径下所有代码文件的总行数 .c\.h\.m文件的总行数

时间:2015-04-08 10:45:51      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:

------iOS培训、Java培训、Android培训, iOS学习型技术博客,期待与您交流------

计算当前路径下所有代码文件的总行数  .c\.h\.m文件的总行数

/*

 计算当前路径下所有代码文件的行数  .c\.h\.m文件的总行数

 涉及到NSArrayNSStringNSFileManager

 */

 

// 计算当前全路径(文件\文件夹)下所有文件的行数

// 接收参数path:文件的全路径(文件、文件夹)

NSUInteger codeLinesCount(NSString *path)

{

    // 1.获得文件管理者    单例模式:整个程序的运行过程中,NSFileManager类的对象只有这一个

    NSFileManager *fmg = [NSFileManager defaultManager];

    

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

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

    // 路径是否存在(有效)

    BOOL isExist = [fmg fileExistsAtPath:path isDirectory:&isDir];

    

    // 3.如果路径不存在,直接返回0退出函数

    if (!isExist)

    {

        NSLog(@"文件路径无效");

        return 0;

    }

    

    // 路径存在

    if (isDir)

    {

        // 是文件夹

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

        // 返回  当前路径(该文件夹)目录下所有(路径)---文件、文件夹路径 列表(数组)

        // 数组元素  并不是全路径

        NSArray *filePathsList = [fmg contentsOfDirectoryAtPath:path error:nil];

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

        

        NSUInteger count = 0;   // 行数

        

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

        for (NSString *filePath in filePathsList)

        {

            // 拼接全路径  当前路径文件夹(子文件\子文件夹)的全路径

            NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filePath];

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

            

            /*

             此处 递归

             调用本身  返回  每个最终子文件的行数

             codeLinesCount(fullPath);

             */

            // 把每个最终子路径文件的行数  累加每个子路径的总行数

            count += codeLinesCount(fullPath);    // 精髓

            

        }

        return count;

    }

    else

    {   // 是个文件

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

        

        /*

          过滤出.c\.h\.m文件

          是个文件  判断文件拓展名

          返回拓展名(忽略大小写---先全部转为小写)

         */

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

        // NSLog(@"拓展名为 %@", extension);

        if ( !([extension isEqualToString:@"c"]

              ||[extension isEqualToString:@"h"]

              ||[extension isEqualToString:@"m"]) )

        {

            return 0;

        }

        

        // 1.加载文件内容,到一个字符串对象

        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

        

        // 2.将文件内容(字符串内容)以‘\n‘每一行进行 切分, 切分好后的内容放入数组 返回

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

        

        // 每一个数组元素都是一个NSString对象,就是文件中一行的内容

//        int i = 0;

//        for (NSString *str in array)

//        {

//            i++;

//            NSLog(@"%d---%@",i, str);

//        }

        

        // NSLog(@"文件名:%@ --- 行数:%ld", path, array.count);

        NSString *shortPath = [path stringByReplacingCharactersInRange:[path rangeOfString:@"/Users/Mac/Desktop/"] withString:@" "];

        NSLog(@"文件名:%@ --- 行数:%ld", shortPath, array.count);

        return array.count;     // 数组元素个数就是行数

    }

    

}

黑马程序员---工具类---OC自定义函数---计算当前路径下所有代码文件的总行数 .c\.h\.m文件的总行数

标签:

原文地址:http://www.cnblogs.com/ithmPeak/p/4401414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!