//// main.m// 計算程式碼數//// Created by apple on 13-8-12.// Copyright (c) 2013年 apple. All rights reserved.//#import <Foundation/Foundation.h>// NSFileManger ,NSString ,NSArray 類的使用// 計算單個檔案的程式碼數 (可能是檔案 可能是檔案夾)// path :檔案的全路徑 傳回值: intint codeLineCount(NSString *path){ // NSFileManger 是單粒對象 NSFileManager *mgr = [NSFileManager defaultManager]; // 判斷path 是檔案還是檔案夾 BOOL dir = NO;// 標記是否為檔案夾 // 判斷 這個路徑是否存在 BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir]; // 如果不存在 ,直接返回 0 if(!exist) { NSLog(@"該路徑不存在"); return 0; } if (dir) { NSLog(@"是檔案夾"); NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; //NSLog(@"%@",array); int sum = 0; for(NSString *filename in array) { // 子檔案夾 的全路徑 NSString *fullname = [NSString stringWithFormat:@"%@/%@",path,filename]; sum += codeLineCount(fullname); } return sum; } else { NSLog(@"是檔案"); // 判斷檔案拓展名 NSString *extentsion = [[path pathExtension] lowercaseString]; NSLog(@"%@",extentsion); if(![extentsion isEqualToString:@"h"]&& ![extentsion isEqualToString:@"m"]&& ![extentsion isEqualToString:@"c"]&& ![extentsion isEqualToString:@"docx"]) { return 0; } // 讀取檔案(負載檔案內容) NSString *contents = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; // NSLog(@"%@",contents); // 用 \n 分割檔案 NSArray * array = [contents componentsSeparatedByString:@"\n"];// for(id obj in array)// {// NSLog(@"%@",obj);// } NSRange range = [path rangeOfString:@"Users/apple/Desktop/"]; NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; NSLog(@"%@ %zd",str, array.count); // return (int)contents.length; return (int)array.count; } // 檔案的分割數 就是 檔案的行數}int main(int argc, const char * argv[]){ // NSString *str = @"jak\njdfs"; // [str writeToFile:@"/Users/apple/Desktop/data.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; int count = codeLineCount(@"/e:/a.rtf"); NSLog(@"行數為~~%d",count); return 0;}