1.參數是文件(夾)路徑:path
2.跟路徑有關的類是NSfileManager,這個類的對象是單例對象,
3.首先要創建這個對象 。(NSfileManager *mgr =[ NSfileManager defaultManager])
然後運用對象的方法對路徑進行判斷。
4。運用到遞歸的算法。
int codeLineConut(NSString *path){
NSFileManager *mgr = [NSFileManager defaultManager];//創建文件管理器
//判斷路徑是否爲文件夾
bool dir = NO;//默認爲不存在
bool exit = [mgr fileExistAtPath:path isDiretory:&dir];//如果path爲文件夾將在dir指向位置寫入NO,否則寫入YES.如果path不存在將返回NO,否則返回YES。
if(!exit){
NSLog(@"路徑不存在");
return 0;
}
NSString *extension = [path pathExtension lowercaseString];//返回文件擴展名 lowrcaseString 轉換爲對應的小寫。
if(([extension isEqualToString:@"h"]
&&![extension isEqualToString:@"c"]
&&![extension isEqualToString:@"m"])){
return 0;
}
if(dir){
NSArrary *str = [mgr contentOfDirectoryAtPath:path error:nil];
//將路徑下的文件(夾)放入數組中。
int count = 0;
for(NSString *filename in str)
{ NSString *fullpath = [NSString stringwithformat:@"%@/%@",path,filename];
count +=codeLineCount(fullpath);
}
return count;
}
else{
NSString *content = [NSString stringWithContentOfFie:path ending:NSUTF8StringEncoding error:nil];//將文件內容轉換爲字符串。
NSArrary *str1 = [content componmentSeparatedByString:@"\n"];//通過\n來隔離內容將內容分配成塊,查看一共有多少塊。就是多行。文件換行符,就是\n.只不過沒顯示出來。
rerturn str1.count;
}
}
int main(){
int count codeLineCount(@"/users/yanhang/Desktop/");
NSLog(@"count = %d",count);
return 0;
}