oc之遞歸遍歷文件的行數

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;

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章