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

-Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

计算代码总行数

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

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

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

考察内容: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:@"\n"];

        //删除文件路径前面的/Users/fengze/Desktop/练习/
        NSRange range = [path rangeOfString:@"/Users/fengze/"];
        NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];

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

    }
}
时间: 2024-08-04 18:39:26

黑马程序员___综合练习 计算代码总行数的相关文章

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

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 计算代码总行数 思路:1.判断给出的路径是文件还是文件夹 2.如果是文件,用\n把文件分割成一个数组,计算数组元素个数就可以得出文件总行数 如果是文件夹,获得文件夹的所有内容,包括文件和文件夹,然后有递归算出文件夹所有代码的总行数 考察内容:NSString.NSArray.NSFileManager的使用 代码演示: #import <Foundation/Foundation.h> NS

黑马程序员___多线程小结

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 进程和线程 进程是正在进行中的程序,指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程. Java程序的进程里有几个线程:主线程, 垃圾回收线程(后台线程) 线程是指进程中的一个执行任务(控制单元),一个进程中可以运行多个线程,多个线程可共享数据.多线程:在同一个进程中同时运行的多个任务;一个进程至少有一个线程,为了提高效率,可以在一个进程中

黑马程序员___银行调度业务系统

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 模拟实现银行业务调度系统逻辑,具体需求如下: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口. 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费.电话费之类业务的客户). 异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户 :普通客户 :快速客户  =  1 :6 :3. 客户办理业务所需时间有最大

计算代码总行数

如何通过IO实现计算代码行数 利用BufferReader特有的readline方法计算首先创建一个方法计算 package revie_Io; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Count { static int

黑马程序员___交通灯管理系统

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 交通灯管理系统的项目需求 异步随机生成按照各个路线行驶的车辆. 例如: 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 ... 信号灯忽略黄灯,只考虑红灯和绿灯. 应考虑左转车辆控制信号灯,右转车辆不受信号灯控制. 具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制

黑马程序员_类对象创建代码的执行顺序测试总结

class StaticCode { // 类的非静态成员变量(实例变量)定义语句: // 作用:用来存储对象的特有数据的成员变量. // 运行:当类对象被创建时就执行,按照顺序自上而下执行,和构造代码块平级.(即当有多个构造函数 // 代码块和多个非静态成员变量时,JVM按照自上而下的顺序来执行所有语句,包括构造代码块里的代码 // 和非静态成员的声明.) // 存储位置:非静态变量位于堆内存中的对象实体中. int num = 3; // 构造代码块 { System.out.println

黑马程序员___预处理指令

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.预处理指令指的是在代码翻译成0和1之前执行的操作2.预处理指令都是以#开头的,它的位置可以随便写3.预处理指令的作用域是从编写指令的开始,一直到文件结尾,但是遇到#undef可以取消宏定义的作用 一.宏定义 1.定义:#define kCount 4,宏名一般用大写或者用k开头,变量名一般用小写2.运用场合:如果某个变量使用的频率特别高,我们就可以用宏定义,比如pi,圆周率,这样的好处是可

黑马程序员___数据类型总结

数据类型总结 一.基本数据类型 1.int(整型) 1>long int 长整型,也可以简写成long,  占据8个字节,占位符用%ld 2>short int 小的整型,也可以简写成short,占据2个字节,占位符用%d或%i 3> unsigned int 表示没有符号的整型,0和正整数,也可以写成unsigned,占据4个字节,占位符用%zd 4>signed int 有符号的整型,也可以简写成signed,占据4个字节,占位符用%d或 %i 2.float/double 1

黑马程序员___常用英语单词汇总

property   性质,性能 synthesize   合成,综合 prefix   前缀,加掐最 package   包 interact   相互作用 summary    摘要 description   描述 definition   定义 indent   缩进 category   分类 load   加载 initialize   初始化 perform   执行,机器运转 character   字符 deallocate   解除分配 alloc   分配 instance