OC获取文件(夹)的代码行数

 /*
考察NSString NSArray
NSFileManager
*/
#import <Foundation/Foundation.h>
/*
计算单个文件的代码行数 path:文件的全路径
返回值 代码行数
*/
int codeLineCounts(NSString *path)
{
//判断文件的后缀pathExtension 并转化为小写
NSString *extension = [[path pathExtension]lowercaseString];
//判断文件后缀是否是m
if (![extension isEqualTo:@"m"])
{
return ;
}
//1.从文件中读入内容存入到字符串中
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//2.通过字符分割,将分割好的内容存入到数组中
NSArray * array = [content componentsSeparatedByString:@"\n"];
//3.数组的大小就是 文件的代码行数
NSUInteger counts = array.count;
//4.将路径/Users/mqy/Desktop/练习代码/ 替换为空
NSString *subPath = [path stringByReplacingCharactersInRange:[path rangeOfString:@"/Users/mqy/Desktop/练习代码/"] withString:@""];
//输出文件路径和代码行数
NSLog(@"%@ --%ld",subPath,counts);
return (int)counts;
}
/*
计算文件或者文件夹里面的代码行数 */
NSUInteger codeLineCount(NSString *path)
{
//1.首先获得文件管理者
NSFileManager *mger = [NSFileManager defaultManager];
//2.判断路径的有效性,路径是否存在,不存在return
BOOL dir = NO;//标记是否为文件夹
BOOL exist = [mger fileExistsAtPath:path isDirectory:&dir];
//3.如果路径不存在log输出 return
if(!exist)
{
NSLog(@"文件路径不存在,请查看");
return ;
}
//4.如果路径存在判断是文件夹 还是文件 dir为yes 则为文件夹
if (dir)
{
int count = ;
//5.如果是文件夹,遍历文件夹获取文件夹里面信息
NSArray *contentList = [mger contentsOfDirectoryAtPath:path error:nil];
//6.遍历数组
for (NSString *fileName in contentList)
{
//7.获取文件的全路径
NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,fileName];
//8.获取文件下的代码行数 SUM
count += codeLineCount(fullPath); }
return count; }else
{
return codeLineCounts(path);
}
return ;
} int main(int argc, const char * argv[])
{
NSString *path = @"/Users/mqy/Desktop/练习代码"; NSUInteger lineCounts = codeLineCount(path);
NSLog(@"代码行数是:%ld",lineCounts); return ;
}
上一篇:EasyUi TreeGrid封装


下一篇:Quartz.Net简单使用