Foundation框架终极一弹:代码行数统计程序

用到知识点:NSFileManager,NSArrayNSString

/*

 计算单个文件的代码行数

 ptth :文件全路径(可能是文件夹,也可能是文件)

 返回值:int :代码行数

 */

NSUInteger codeCount(NSString *path)

{

    //获得文件管理者

    NSFileManager *mgr = [NSFileManagerdefaultManager];

  

    // 1.判断path时路径还是文件

    BOOL dir = NO; // 标记是否为路径

    

    // 2.这个路径是否存在

    BOOL exist = [mgr fileExistsAtPath:pathisDirectory:&dir];

    

    // 3.如果不存在返回0

    if(!exist)

    {

        NSLog(@"路径不存在!!!");

        return 0;

    }

    else

    {

        // 5.路径存在

        if(dir)

        {

            // 行号

            int count=0;

             // 所有文件(文件夹和文件)

            NSArray *array = [mgr contentsOfDirectoryAtPath:patherror:nil];

            // 获得全路径

            for (NSString *fileName in array)

            {

                // 子文件夹的全路径

                NSString *fullpath = [NSString stringWithFormat:@"%@/%@",path,fileName];

                

                // 累加代码行数

                count+=codeCount(fullpath);

            }

            return count;

            

        }

        else

        {

            // 1.判断文件扩展名(都转换成小写进行比较)

            NSString *extension = [[path pathExtension]lowercaseString];

            if(![extension isEqualToString:@"h"] && ![extensionisEqualToString:@"m"] && ![extensionisEqualToString:@"c"])

            {

                //文件拓展名不是.m .c .h

                return 0;

            }

            else{

                // 2.获取文件内容

                NSString *str = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncodingerror:nil];

                // 3.根据\n分割

                NSArray *array = [str componentsSeparatedByString:@"\n"];

                // 显示文件对应的代码行数

                NSLog(@"%@---->%d",path,array.count);

                

                // 4.返回行数(数组个数)

                return array.count;

            }

        }

    }

   return 0;

}

int main(int argc,const char * argv[])

{

    @autoreleasepool

    {

        int count =codeCount(@"/Users/fendou/Desktop/练习代码");

        if( count < 5000 )

        {

            NSLog(@"---经过计算你的代码行数---");

            NSLog(@"-----⭐️%d⭐️------",count);

            NSLog(@"---战五渣你还写毛的代码---");

        }

        else

        {

            NSLog(@"---经过计算你的代码行数---");

            NSLog(@"-----⭐️%d⭐️------",count);

            NSLog(@"---不错不错,骚年继续撸---");

        }

    }

   return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值