• 黑马程序员___综合练习 计算代码总行数


    计算代码总行数

    思路:1.判断给出的路径是文件还是文件夹

                2.如果是文件,用 把文件分割成一个数组,计算数组元素个数就可以得出文件总行数

          如果是文件夹,获得文件夹的所有内容,包括文件和文件夹,然后有递归算出文件夹所有代码的总行数 

    考察内容:NSString、NSArray、NSFileManager的使用

    代码演示:

    #import <Foundation/Foundation.h>
    
    NSUInteger codeLineCount(NSString *path);
    
    
    int main()
    {
        
        NSUInteger count = codeLineCount(@"/Users/fengze/Desktop");
        NSLog(@"%ld",count);
        return 0;
    }
    
    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:@"c"]
                 &&[extension isEqualToString:@"m"]))
            {
                //文件拓展名不是h,c,m
                return  0;
            }
             // 加载文件内容
            NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
            //将文件内容切割为每一行
            NSArray *array = [content componentsSeparatedByString:@"
    "];
            
            //删除文件路径前面的/Users/fengze/Desktop/练习/
            NSRange range = [path rangeOfString:@"/Users/fengze/"];
            NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];
            
            //打印文件路径和行数
            NSLog(@"%@ - %ld",str,array.count);
            return array.count;
                  
        }
    }
  • 相关阅读:
    45 岁,还写代码吗?
    给你 8 个接私活的网站
    一文回顾 Java 入门知识(下)
    5 种前途迷茫的编程语言
    JVM 内存的结构模型、堆与堆栈原理、对象在内存中的结构
    mysql 索引是否能提高UPDATE,DELETE,INSERT 处理速度
    【诈尸】【游戏】多人联机游戏推荐
    250.统计同值子树
    366. 寻找二叉树的叶子节点
    156.上下翻转二叉树
  • 原文地址:https://www.cnblogs.com/jia694600474/p/4012362.html
Copyright © 2020-2023  润新知