标签:
------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;
}
}
标签:
原文地址:http://www.cnblogs.com/qiang0901/p/4498533.html