利用Foundation框架写的小程序统计文件(文件夹内文件)的所有行数(或统计字数)
来源:互联网 发布:淘宝假货凭证 编辑:程序博客网 时间:2024/06/05 16:52
//// 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;}