您的位置:首页 > 移动开发 > Objective-C

Objective-C 计算文件夹里的代码行数

2015-07-09 17:52 363 查看
//
//  main.m
//  计算代码行数
//
//  Created by waka on 15/7/9.
//  Copyright (c) 2015年 OC. All rights reserved.
//

#import <Foundation/Foundation.h>

NSInteger codeLineCount(NSString *path)// 计算文件夹代码函数
{
// 获得 文件管理者
NSFileManager *mgr = [NSFileManager defaultManager];
// 判断 path 是文件 还是 文件夹
BOOL dir = NO;// yes 是文件夹 no 不是文件夹
// 判断 文件(夹) 是否存在
BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
if(!exist)
{
NSLog(@"输入有误!");
return 0;// 输入的文件不存在  结束
}

if (dir)
{// 是文件夹
NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; // 把当前文件/夹 里的东西放到一个数组里
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:@"m"])// 计算.h 和 .m 的
{
//NSLog(@"文件有误!");
return 0;
}
// 加载文件内容
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//NSLog(@"%@",content);
// 计算 有多少个换行
NSArray *array = [content componentsSeparatedByString:@"\n"];// 函数意思是 把文件 按 什么(@“...”) 分割

// 遍历 每一行 输出
//    int i=0;
//    for (NSString *line in array)
//    {
//        NSLog(@"%d--%@",i,line);
//        i++;
//    }

// 觉得 输出的文件路径太长
NSRange range = [path rangeOfString:@"/Users/waka/Documents/Objective-c/"];// 获得指定搜索的文件夹
NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; // 把路径输出为 空

NSLog(@"%@ - %ld",str,array.count); // 打印 文件路径及 单个文件代码行数
return array.count;

}

}
<pre name="code" class="objc">int main( )
{
NSInteger count = codeLineCount(@"/Users/waka/Documents/Objective-c/");// 输入 要查的文件夹路径
NSLog(@"%ld",count);

return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息