------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1.介绍
Foundation框架学习的差不多了,可是只知道理论只知道声明变量,只知道遍历,不通过一个项目把所学的知识串起来是没用的哦。
以下是看李明杰老师视频写的代码行数统计项目,由于初学类的方法不是很熟自己把主要的思路写了一下,在跟着老师的视频把这个写完了。
代码如下:
int countLineCount(NSString *path)
{
//用来统计行数
int count=0;
NSFileManager *fileManager=[NSFileManager defaultManager];
//声明一个bool变量 是否是目录,因为下个函数需要用到这个变量的地址
BOOL isDir=NO;
//返回一个bool值,这个bool代表文件是否存在
BOOL isExist=[fileManager fileExistsAtPath:path isDirectory:&isDir];
if (!isExist) {
NSLog(@"文件不存在");
return 0;
}
//如果是目录的话
if (isDir) {
//这个方法就是返回这个目录下的子目录和文件 返回的是一个NSArray对象
NSArray *files=[fileManager contentsOfDirectoryAtPath:path error:nil];
for(NSString *file in files)
{
NSString *fullpath=[NSString stringWithFormat:@"%@/%@",path,file];
//统计这个路径下的文件行数
count+=countLineCount(fullpath);
}
}
else{//如果是文件的话直接统计行数 没有子目录就不需要递归了
NSString *extension=[[path pathExtension] lowercaseString];
//判断文件的后缀
if ([extension isEqualToString:@"c"]||[extension isEqualToString:@"m"]
||[extension isEqualToString:@"h"]) {
//通过文件来获得一个NSString对象
NSString *content=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//把NSString对象按照分隔符隔开,返回一个NSArray对象
NSArray *array=[content componentsSeparatedByString:@"\n"];
NSRange range = [path rangeOfString:@"/Users/Andy/Desktop/传智播客IOS开发零基础教程源代码和PPT/代码/0723"];
NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];
// 打印文件路径和行数
NSLog(@"%@ - %ld", str, array.count);
//把这个文件代码行数统计起来
count+=array.count;
}
}
return count;
}