黑马程序员技术交流社区

标题: 返回一个文件夹中代码行数的函数 [打印本页]

作者: 银河雨    时间: 2014-11-4 15:17
标题: 返回一个文件夹中代码行数的函数

  1. 计算一个文件夹下面所有文件的行数的函数:
  2. //path:文件的全路径(可能是文件夹、也可能是文件)
  3. //返回值 int:代码行数
  4. int  codeLineCount (NSString *path)
  5. {
  6.     //获取文件的管理者,是一个单例
  7.     NSFileManager  *fmgr = [NSFileManager defaultManager];
  8.     //判断是文件还是文件夹。NO表示是文件,YES表示是文件夹
  9.     BOOL  dir  =  NO;
  10.     //判断路径是否存在
  11.     BOOL  exist  = [fmgr  fileExistAtPath:path isDirectory:&dir];
  12.     // 如果路径不存在,直接返回
  13.     if(!exist)  
  14.         {
  15.             NSLog(@"文件路径不存在!!!!");
  16.             return 0;
  17.         }
  18.     //如果是文件夹
  19.     if(dir)
  20.         {
  21.             NSLog(@"是个文件夹");
  22.             //将当前文件夹里面的所有内容放入一个数组,只有名称,没有路径(包括文件和文件夹)
  23.             NSArray  *array  =  [fmgr  contentsOfDirectoryAtPath:path error:nil];
  24.             
  25.             int count = 0;
  26.             //遍历数组中的所有内容
  27.             for  (NSString  *fileName in  array)
  28.                 {
  29.                      //将所有内容变成全路径
  30.                     NSString *fullPath  =  [NSString  stringWithFormat:@"%@/%@",path,fileName];
  31.                     //递归调用,计算文件中的行数
  32.                     count  += codeLineCount(fullPath);
  33.                 }
  34.             return  count;
  35.         }
  36.         else
  37.         //如果是文件
  38.         {
  39.            //获取文件的扩展名,并转换为小写(这样可以忽略大小写的差别)
  40.             NSString *extension = [[path pathExtension] lowercaseString];
  41.             if(![extension isEqualToString:@"h"] && ![extension isEqualToString:@"m"]  &&  ![extension isEqualToStrting:@"c"])
  42.                 {
  43.                     return 0;
  44.                 }
  45.             //将文件中的内容全部加载出来
  46.             NSString *content  =  [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
  47.             //将文件内容用回车键隔开,放入数组
  48.             NSArray  *array = [content componentsSeparatedByString:@"\n"];
  49.             //返回数组的数量,就是当前文件的行数
  50.             return  array.count;
  51.         }
  52. }
复制代码



作者: 邵永阳    时间: 2015-2-28 15:07
还行,但是感觉没必要写那么多注释。
作者: 世俗孤岛    时间: 2015-2-28 21:06
很用心,很认真




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2