zoukankan      html  css  js  c++  java
  • Foundation


    // 计算文件的代码行数
    /*
    path : 文件的全路径(可能是文件夹、也可能是文件)
    返回值 int :代码行数
    */
    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:@"m"]
          && ![extension isEqualToString:@"c"])
        {
          // 文件拓展名不是h,而且也不是m,而且也不是c
          return 0;
        }

        // 加载文件内容
        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

        // 将文件内容切割为每一行
        NSArray *array = [content componentsSeparatedByString:@" "];

        // 删掉文件路径前面的/Users/apple
        NSRange range = [path rangeOfString:@"/Users/tzktzk1/Desktop/ios"];
        NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];

        // 打印文件路径和行数
        NSLog(@"%@ - %ld", str, array.count);

        return array.count;
      }
    }

    int main()
    {
      NSUInteger count = codeLineCount(@"/Users/tzktzk1/Desktop/ios");
      
      NSLog(@"%ld", count);
      return 0;
    }

  • 相关阅读:
    二维数组传递参数问题
    常用软件
    mybatis项目采用mybatis-plus开发,报:Invalid bound statement (not found) 异常,详细解决方案
    PowerDesigner一键导出数据库设计表结构
    微信即将有自己的输入法,真的是要保护用户隐私吗?
    字段解析之OopMapBlock(4)
    字段解析(3)
    字段解析之伪共享(2)
    字段解析(1)
    常量池解析(2)
  • 原文地址:https://www.cnblogs.com/tzktzk1/p/3329685.html
Copyright © 2011-2022 走看看