用到Foundation中的一些类:
NSManager
NSString
NSArray
//
// main.m
// 10-计算代码行数
//
// Created by xxx on 15/9/16.
// Copyright (c) 2015年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
int countLineOfFile(NSString * path){
// 获得文件管理者
NSFileManager * manager = [NSFileManager defaultManager];
// 判断path是不是一个可计算的文件的路径
BOOL isFile = NO;
BOOL exist = [manager fileExistsAtPath:path isDirectory:&isFile];
if (!exist) { // path的文件路径不存在
return 0;
}
// 如果路径存在
if (isFile) { // path 下的路径是文件夹
// 获得当前文件夹下的所有内容:文件夹及文件
NSArray * fileArray = [manager contentsOfDirectoryAtPath:path error:nil];
int count = 0;
// 查看所有的文件和文件夹
for ( NSString * file in fileArray) {
count += countLineOfFile([NSString stringWithFormat:@"%@/%@",path,file]);
}
return count ;
}
else{
// 获得文件的扩展名
NSString * extension = [path pathExtension];
if(!([extension isEqualToString:@"h"]
|| [extension isEqualToString:@"m"]
|| [extension isEqualToString:@"c"]
|| [extension isEqualToString:@"cpp"]))
return 0;
// 获得文件路径为path的文件中所有内容
NSString * fileConten = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
// 一个字符串用'\n'来划分成多个字符串,即每一行作为一个字符串
NSArray * array = [fileConten componentsSeparatedByString:@"\n"];
// for(NSString * str in array)
// NSLog(@"%@",str);
return (int)array.count ;
}
}
int main(int argc, const char * argv[]) {
// 统计一个文件或文件夹中的代码行数,包括空行
int count = countLineOfFile(@"/Users/qujie/Documents/OC程序/10-计算代码行数");
NSLog(@"count = %d",count);
// NSString * str = @"123-456-789";
// NSArray * array = [str componentsSeparatedByString:@"-"];
// NSLog(@"%@",array);
return 0;
}