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

原创 2015年07月09日 17:52:49
//
//  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;
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

PyQt5学习随笔01--计算一个文件夹里我们码的代码行数&&PyQt的多线程通信

今天突然想知道自学习Python以来我一共码了多少行代码了,于是写了一个简单的程序:__author__ = 'jiangzhiheng' # coding=utf-8 from PyQt5.QtCo...

winapi遍历文件夹,统计c/c++代码行数 (包括注释)

/* win32下文件夹遍历 转载于http://www.cnblogs.com/slash/archive/2010/06/14/1758324.html 基本算法: void function(L...

黑马程序员——OCFoundation框架-9:计算某个文件夹下的代码行数

计算某个文件夹下的代码行数

计算整个文件夹的代码行数

// 传入文件路径 返回文件下所有文件内容行数 unsigned long codeLineCount(NSString *Path) { // 获得文件管理者 NSFileManag...

Objective-C 计算代码运行时间

今天看到一篇关于iOS应用性能优化的文章,其中提到计算代码的运行时间,觉得非常有用,值得收藏。不过在模拟器和真机上是有差异的,以此方法观察程序运行状态,提高效率。 第一种:(最简单的NSDate...

iPhone代码碎片:处理objective-c里html特殊字符显示问题的一个函数

- (NSString *)stringByDecodingXMLEntities { NSUInteger myLength = [self length]; NSUInteger...

统计源文件夹中代码的行数

使用Java预编编写 统计文件夹中含有Java文件的源代码行数

Objective-C语法之代码块(block)的使用

代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。 脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)