• 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;
    }

  • 相关阅读:
    特征选择常用算法综述
    干货:结合Scikit-learn介绍几种常用的特征选择方法
    机器学习中,有哪些特征选择的工程方法?
    牛逼的博客地址
    Discover Feature Engineering, How to Engineer Features and How to Get Good at It
    机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
    机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?
    Libsvm和Liblinear的使用经验谈
    Python 由list转为dictionary
    使用 numpy.random.choice随机采样
  • 原文地址:https://www.cnblogs.com/tzktzk1/p/3329685.html
Copyright © 2020-2023  润新知