J-TAMO~的专栏?

钢铁锅含着泪喊修瓢锅.

Objective-C 计算文件夹里的代码行数

//
//  main.m
//  计算代码行数
//
//  Created by waka on 15/7/9.
//  Copyright (c) 2015年 OC. All rights reserved.
//

#import <Foundation/Foundation.h>

NSInteger codeLineCount(NSString *path)// 计算文件夹代码函数
{
    // 获得 文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    // 判断 path 是文件 还是 文件夹
    BOOL dir = NO;// yes 是文件夹 no 不是文件夹
    // 判断 文件(夹) 是否存在
    BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
    if(!exist)
    {
        NSLog(@"输入有误!");
        return 0;// 输入的文件不存在  结束
    }
    
    if (dir)
    {// 是文件夹
        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; // 把当前文件/夹 里的东西放到一个数组里
        int count = 0;// 计代码数
        for (NSString *fileName in array)// 遍历数组里的所有文件/夹
        {
            // 获得 子文件/夹 的 全路径
            NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,fileName];
            count += codeLineCount(fullPath); // 递归调用~
        }
        return count;
    }
    else
    {// 不是文件夹
        //判断 文件扩展名 (把 字符 都转化成 小写  好判断~)
        NSString *extension = [[path pathExtension] lowercaseString];
        if (![extension isEqualToString:@"h"]&&![extension isEqualToString:@"m"])// 计算.h 和 .m 的
        {
            //NSLog(@"文件有误!");
            return 0;
        }
        // 加载文件内容
        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        //NSLog(@"%@",content);
        // 计算 有多少个换行
        NSArray *array = [content componentsSeparatedByString:@"\n"];// 函数意思是 把文件 按 什么(@“...”) 分割
       
        // 遍历 每一行 输出
        //    int i=0;
        //    for (NSString *line in array)
        //    {
        //        NSLog(@"%d--%@",i,line);
        //        i++;
        //    }
        
        // 觉得 输出的文件路径太长
        NSRange range = [path rangeOfString:@"/Users/waka/Documents/Objective-c/"];// 获得指定搜索的文件夹
        NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; // 把路径输出为 空
        
        NSLog(@"%@ - %ld",str,array.count); // 打印 文件路径及 单个文件代码行数
        return array.count;

    }

    
}
<pre name="code" class="objc">int main( )
{
    NSInteger count = codeLineCount(@"/Users/waka/Documents/Objective-c/");// 输入 要查的文件夹路径
    NSLog(@"%ld",count);
    
    return 0;
}




阅读更多
个人分类: IOS笔记~
上一篇创建随机验证码
下一篇UIView
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭