您的位置:首页 > 职场人生

黑马程序员——OCFoundation框架-9:计算某个文件夹下的代码行数

2015-04-17 15:20 495 查看
————————java培训、Andoroid培训、IOS培训、.Net培训、期待与您交流!————————
Array OC数组
OC数组只能存放OC对象,不能存放非OC对象
OC数组不能存放空值

//Array创建
NSArray *array = [NSArray arrayWithObjects:@"jack", @"rose",nil];
NSArray *array1 = [NSArray arrayWithObject:@"jack"];
//快速创建数组对象
NSArray *array2 = @[@"jack",@"rose",@"take"];
//统计元素个数
[array count];
//访问指定元素
array[1];
[array objectAtIndex:1];
/OC数组遍历
Person *p = [[Person alloc] init];
NSArray *array = @[p,@"rose",@"jack"];
//id obj 代表数组中的元素
for(id obj in array)
{
NSUInteger i=[array indexOfObject:obj];
NSLog(@"%ld-%@",i,obj);
}
//第2种方法
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
//每遍历一个元素,就会调用一次block
//并且当前元素和索引位置当作参数传给block
NSLog(@"%ld-%@",idx,obj);
}];
//引申设计
void ^myblock(id,NSUInteger,BOOL *)=^(id obj,NSUInteger idx,BOOL *stop)
{
NSLog(@"%ld-%@",idx,obj);
if(idx==2)
{
*stop=YES;
}
};
for(int i=0;i<array.count;i++)
{
BOOL isStop=NO;
id obj=array[i];
myblock(obj,i,&isStop);
if(isStop)
{
break;
}
}


计算某个文件夹下的代码行数
考察NSString,NSArray和NSFileManager的使用
NSUInteger codeLineCount(NSString *path)
{
//1.获得文件管理者
NSFileManager *mgr = [NSFileManager defaultManager];

//2判断path是文件路径还是文件夹
BOOL dir = NO;//标记是否为文件夹
BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];

//3判断路径是否存在
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 //是文件
{
//4判断文件拓展名
NSString *extension = [[path pathExtension] lowercaseString ];
if(!([extension isEqualToString:@"m"]||[extension isEqualToString:@"h"]
||[extension isEqualToString:@"c"]))
{
return 0;
}

NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//分局指定内容分割字符串成n块
NSArray *array = [content componentsSeparatedByString:@"\n"];
/*
int i=0;
for(NSString *line in array)
{
NSLog(@"%d-%@",i,line);
i++;
}
*/
NSRange range= [path rangeOfString:@"/Users/tjl/Desktop/2015"];
NSString *newStr = [path stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"%@-%ld",newStr,array.count);
return array.count;
}
}

int main()
{
NSUInteger count=codeLineCount(@"/Users/tjl/Desktop/2015");
NSLog(@"%ld",count);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: