//
// main.m
// 03--计算文件中得代码行数
//
// Created by LeeWong on 14-10-25.
// Copyright (c) 2014年 LeeWong. All rights reserved.
//
#import <Foundation/Foundation.h>
/*
//计算单个文件的行数
NSUInteger codeLineCount(NSString *path)
{
//读出文件的内容
NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//输出字符串内容进行验证 是否正确读出文件内容
NSLog(@"%@",str);
//将读出的文件内容一'\n'分开
NSArray *array = [str componentsSeparatedByString:@"\n"];
for( NSString *obj in array)
{
NSLog(@"%@",obj);
}
return array.count;
}
*/
//计算某个文件夹下所有文件的行数
NSInteger codeLineCount(NSString *path)
{
//新建一个文件管理这
NSFileManager *mgr = [NSFileManager defaultManager];
BOOL dir = NO;
//判断传入的路径是否合理
BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
if(!exist)
{
//文件不存在 退出程序
NSLog(@"文件不存在");
return 0;
}
//路径合理 判断路径是一个文件还是文件夹
if(dir == YES)
{
int count = 0;//该文件夹中得文件数为0
//这是一个文件夹
//读取这个文件夹中得文件 存放于数组之中
NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
//输出这个数组中得内容
for(NSString *filename in array)
{ //输出其路径
//NSLog(@"%@%@",path,filename);
//拼接成全路径
NSString *fullpath = [NSString stringWithFormat:@"%@/%@",path,filename];
//递归调用本函数codelinecount计算行数
count += codeLineCount(fullpath);
}
return count;
}
else
{
//只计算后缀为.h .m .c的文件
//取出该文件的后缀
NSString *extension = [[path pathExtension] lowercaseString];
if(![extension isEqualToString:@"m"] && [extension isEqualToString:@"h"] && [extension isEqualToString:@"c"])
{
return 0;
}
//NSLog(@"%@",extension);
//这是一个文件
//读出文件的内容
NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//输出字符串内容进行验证 是否正确读出文件内容
// NSLog(@"%@",str);
//将读出的文件内容一'\n'分开
NSArray *array = [str componentsSeparatedByString:@"\n"];
/* for( NSString *obj in array)
{
NSLog(@"%@",obj);
}
*/
//打印出每个文件的 文件名 跟行数
//NSLog(@"%@ %ld",path,array.count);
//上面的方法打印文件路径过于冗余 修改简单
//先计算 荣誉路径的范围
NSRange range = [path rangeOfString:@"/Users/LeeWong/Desktop/project"];
NSString *newpath = [path stringByReplacingCharactersInRange:range withString:@" "];
NSLog(@"%@--%ld",newpath,array.count);
return array.count;
}
}
int main() {
//调用函数
NSUInteger linecount = codeLineCount(@"/Users/LeeWong/Desktop/project");
NSLog(@"%ld",linecount);
return 0;
}
void test()
{
NSUInteger line = codeLineCount(@"/Users/LeeWong/Desktop/1.txt");
NSLog(@"the line of this program is %ld",line);
}
main.m// 03--计算文件中得代码行数 Created by LeeWong on 14-10-25.// Copyright (c) 2014年 LeeWong. All rights reserved.//#import /*//计算单个文件的行数NSUInteger codeLineCount(NSString *path){ //读出文件的内容 NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //输出字符串内容进行验证 是否正确读出文件内容 NSLog(@"%@",str); //将读出的文件内容一'\n'分开 NSArray *array = [str componentsSeparatedByString:@"\n"]; for( NSString *obj in array) { NSLog(@"%@",obj); } return array.count;}*///计算某个文件夹下所有文件的行数NSInteger codeLineCount(NSString *path){ //新建一个文件管理这 NSFileManager *mgr = [NSFileManager defaultManager]; BOOL dir = NO; //判断传入的路径是否合理 BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir]; if(!exist) { //文件不存在 退出程序 NSLog(@"文件不存在"); return 0; } //路径合理 判断路径是一个文件还是文件夹 if(dir == YES) { int count = 0;//该文件夹中得文件数为0 //这是一个文件夹 //读取这个文件夹中得文件 存放于数组之中 NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; //输出这个数组中得内容 for(NSString *filename in array) { //输出其路径 //NSLog(@"%@%@",path,filename); //拼接成全路径 NSString *fullpath = [NSString stringWithFormat:@"%@/%@",path,filename]; //递归调用本函数codelinecount计算行数 count += codeLineCount(fullpath); } return count; } else { //只计算后缀为.h .m .c的文件 //取出该文件的后缀 NSString *extension = [[path pathExtension] lowercaseString]; if(![extension isEqualToString:@"m"] && [extension isEqualToString:@"h"] && [extension isEqualToString:@"c"]) { return 0; } //NSLog(@"%@",extension); //这是一个文件 //读出文件的内容 NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //输出字符串内容进行验证 是否正确读出文件内容 // NSLog(@"%@",str); //将读出的文件内容一'\n'分开 NSArray *array = [str componentsSeparatedByString:@"\n"]; /* for( NSString *obj in array) { NSLog(@"%@",obj); } */ //打印出每个文件的 文件名 跟行数 //NSLog(@"%@ %ld",path,array.count); //上面的方法打印文件路径过于冗余 修改简单 //先计算 荣誉路径的范围 NSRange range = [path rangeOfString:@"/Users/LeeWong/Desktop/project"]; NSString *newpath = [path stringByReplacingCharactersInRange:range withString:@" "]; NSLog(@"%@--%ld",newpath,array.count); return array.count; }}int main() { //调用函数 NSUInteger linecount = codeLineCount(@"/Users/LeeWong/Desktop/project"); NSLog(@"%ld",linecount); return 0;}void test(){ NSUInteger line = codeLineCount(@"/Users/LeeWong/Desktop/1.txt"); NSLog(@"the line of this program is %ld",line);}