利用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;}

原创粉丝点击