NSUInteger codeLineCount(NSString *path)
{
1、创建文件管理者
NSFileManager采用了单例模式(在整个程序运行过程中只有一份)
下面这句代码调用多次,返回的也是同一个对象
NSFileManager *mgr = [NSFileManager defaultManager];
2、判断path是文件夹还是文件路径
BOOL dir = NO;//标记是否为文件夹
整个路径是否存在
BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
if(!exist)
{
return 0;
}
if(dir)
{
保存行数
NSUInteger count = 0;
存储着当前文件夹下面的所有内容(文件夹和文件)
NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
遍历数组中的所有元素
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"]
&& ![extension isEqualToString:@"c"])
{
// 文件拓展名不是h,而且也不是m,而且也不是c
return 0;
}
// 加载文件内容
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
// 将文件内容切割为每一行
NSArray *array = [content componentsSeparatedByString:@"\n"];
// 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/
NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/"];
NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];
// 打印文件路径和行数
NSLog(@"%@ - %ld", path, array.count);
return array.count;
}
}
NSMutableArray
基本用法:
//初始化
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Rose",@"Tom", nil];
//添加元素
[array addObject:@"jack"];
//删除所有元素
[array removeAllObjects];
//删除指定对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:1];
//错误写法
[array addObject:nil];
@[@"jack",@"rose"];//这个方法返回值是NSArray。所以下面的写法是错误的:
NSMutableArray *yy = @[@"jack",@"Rose"];
[yy addObject:@"jk"];
NSArray排序
NSMutableArray其他用法:
删除元素
添加元素:
替换元素
排序