A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 银河雨 中级黑马   /  2014-11-4 15:17  /  1908 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  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. }
复制代码


2 个回复

倒序浏览
还行,但是感觉没必要写那么多注释。
回复 使用道具 举报
很用心,很认真
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马