用到知识点:NSFileManager,NSArray,NSString
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;
}