黑马程序员————IOS学习笔记 第11篇 经典示例计算代码行数
来源:互联网 发布:htc刷机救砖软件 编辑:程序博客网 时间:2024/06/06 06:33
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
这是mj老师讲过的计算代码行数的实例,要用到NSArry与NSString,从这个程序中可以看到这两个类的经典方法的运用和读取文件内容及遍历文件内容的方法,还有递归的思想。其中标红为要掌握内容。
NSUInteger codeLineCount(NSString *path){ <span style="color:#ff6666;">// 1.获得文件管理者</span> NSFileManager *mgr = [NSFileManager defaultManager]; <span style="color:#ff0000;">// 2.标记是否为文件夹</span> BOOL dir = NO; // 标记是否为文件夹 // 标记这个路径是否存在 BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir]; <span style="color:#ff6666;"> // 3.如果不存在,直接返回0</span> if(!exist) { NSLog(@"文件路径不存在!!!!!!"); return 0; } // 代码能来到着,说明路径存在 if (dir) { // 文件夹 <span style="color:#ff0000;">// 获得当前文件夹path下面的所有内容(文件夹、文件)</span> NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; <span style="color:#ff0000;"> // 定义一个变量保存path中所有文件的总行数</span> int count = 0; <span style="color:#ff0000;"> // 遍历数组中的所有子文件(夹)名</span> for (NSString *filename in array) { <span style="color:#ff6666;">// 获得子文件(夹)的全路径</span> NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filename]; // 累加每个子路径的总行数 count += codeLineCount(fullPath); } return count; } else { // 文件 <span style="color:#ff0000;">// 判断文件的拓展名(忽略大小写)</span> NSString *extension = [[path pathExtension] lowercaseString]; if (![extension isEqualToString:@"h"] && ![extension isEqualToString:@"m"] && ![extension isEqualToString:@"c"]) { // 文件拓展名不是h,而且也不是m,而且也不是c return 0; } <span style="color:#ff0000;">// 加载文件内容</span> NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; <span style="color:#ff0000;"> // 将文件内容切割为每一行</span> NSArray *array = [content componentsSeparatedByString:@"\n"]; // 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/ NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/"]; NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; // 打印文件路径和行数 NSLog(@"%@ - %ld", str, array.count); return array.count; }}int main(){ NSUInteger count = codeLineCount(@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享"); NSLog(@"%ld", count); return 0;}
0 0
- 黑马程序员————IOS学习笔记 第11篇 经典示例计算代码行数
- iOS——计算项目代码行数
- 黑马程序员——OCFoundation框架-9:计算某个文件夹下的代码行数
- 黑马程序员——Foundation---结构体,字符串,NSArray,计算代码行数
- 经典例题——计算代码行数(OC)
- 黑马程序员————IOS学习笔记 第8篇 内存管理优化
- 黑马程序员————IOS学习笔记 第9篇 block 、protocol的认识
- 黑马程序员————IOS学习笔记 第10篇 Foundation框架
- 黑马程序员—学习笔记之SQL数据分组、限制结果集行数
- 黑马程序员————IOS学习笔记 第3篇 OC面向对象三大特性(1)
- 黑马程序员————IOS学习笔记 第4篇 OC面向对象三大特性(2)
- 黑马程序员————IOS学习笔记 第5篇 OC特殊语法 (1)
- 黑马程序员————IOS学习笔记 第6篇 OC特殊语法(2)
- 黑马程序员————IOS学习笔记 第12篇 关于单例设计模式的认识
- 黑马程序员——ios学习笔记 C语言 指针
- 黑马程序员——ios学习笔记 OC 初步认识
- 黑马程序员——ios学习笔记 OC 类
- 黑马程序员——ios学习笔记 OC 继承
- jQuery mobile 学习12 表单的使用方法及访问设备判断
- 806 - Spatial Structures
- Gvim —— win 7 下 vim 环境配置 及python开发常用设置
- 腾讯云 CentOS6.2 64位 NFS 安装
- 810 - A Dicey Problem
- 黑马程序员————IOS学习笔记 第11篇 经典示例计算代码行数
- Feekood开发环境介绍(2)-- 资源管理界面
- linux shell 远程执行命令
- CodeForces 148E Porcelain
- 1600 - Patrol Robot
- 使用 scp命令免登陆
- github上好用的第三方库
- ubuntu下安装lamp环境
- HTML Attributes