#import <Foundation/Foundation.h>
NSUInteger InDictionary(NSString*);
NSUInteger InFile(NSString*);
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString* path;//文件路径
NSLog(@"%lu",InDictionary(path));
}
return 0;
}
NSUInteger InDictionary(NSString* path){
//NSFileManager是单例模式 [[NSFileManager alloc] init]不起作用,整个类中只有一个对象
NSFileManager* fileManager = [NSFileManager defaultManager];
BOOL isDir = YES;
BOOL exist = [fileManager fileExistsAtPath:path isDirectory:&isDir];
//先判断文件是不是存在,在判断是不是路径
if(!exist){
NSLog(@"文件路径不存在");
return 0;
}
if(isDir){
int count = 0;
//目录
//目录中的所有相对路径,注意是相对路径,所以还要设置一个全路径
NSArray* pathContents = [fileManager contentsOfDirectoryAtPath:path error:nil];
for (int i = 0; i<pathContents.count; i++) {
//用这种方法设置全路径
NSString* fullPath = [NSString stringWithFormat:@"%@/%@",path,pathContents[i]];
count+=InDictionary(fullPath);
}
return count;
}
else{
// 不是目录
return InFile(path);
}
return 0;
}
NSUInteger InFile(NSString* path){
//文件的拓展名是txt h m c cpp mm才行 (不是.txt .h .c .cpp .m .mm)
NSString* extentName = [path pathExtension];
if(![extentName isEqualTo:@"txt"]){
return 0;
}
NSString* content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//用"\n"把文件的内容分割,数组的每一项内容就是文件的每一行内容(array[0]就是文件的第一行的内容),所以数组的个数就是文件的行数
NSArray* array = [content componentsSeparatedByString:@"\n"];
return array.count;
}