首页 > 其他 > 详细

黑马程序员----练习:计算整个文件夹的代码行数

时间:2015-03-23 00:20:10      阅读:271      评论:0      收藏:0      [点我收藏+]

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

//
//  main.m
//  02-计算整个文件夹的代码行数
//
//  Created by unique on 15-1-26.
//  Copyright (c) 2015年 unique. All rights reserved.
//

#import <Foundation/Foundation.h>

NSUInteger codeLines(NSString *path)
{
    // 1.获得文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    
    // 2.判断path是文件夹还是文件路径
    BOOL dir = NO;
    
    BOOL exist = [mgr fileExistsAtPath:path isDirectory: &dir];
    
    // 3.如果文件路径不存在,直接返回0
    if(!exist)
    {
        NSLog(@"这个路径不存在!!!!!");
        return 0;
    }
    
    // 4.如果路径存在,继续下面的执行
    // 1> 如果dir == 1 ,说明路径是一个文件夹
    if (dir)
    {
       // NSLog(@"这是一个文件夹!");
        
        // 2> 如果是文件夹,就获取文件夹里面的所有东西(包括子文件夹和文件)
        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
        
        int count = 0;
        
        
        // 3> 遍历数组中的所有文件及文件名
        for (NSString *fileName in array)
        {
            NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, fileName];
            
            count += codeLines(fullPath);
        }
        
        return count;
    }
    
    // 5.如果是个文件
    else
    {
        // 1> 对文件进行过滤
        // * 获取文件的拓展名(没有点)并转换成小写
        NSString *extension = [[path pathExtension] lowercaseString];
        
        // * 如果不是.h .m .c文件就返回0
        if (![extension isEqualToString:@"h"]
            && ![extension isEqualToString:@"m"]
            && ![extension isEqualToString:@"c"])
        {
            return 0;
        }
        
        // *如果是.h .m .c文件就执行下面的代码
        // 1> 加载文件内容
        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        
        // 2> 将文件内容分割成每一行
        NSArray *array = [content componentsSeparatedByString:@"\n"];
        
        NSRange range = [path rangeOfString:@"/Users/unique/Desktop/ios学习/"];
        
        NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];
        
        NSLog(@"%@--%ld", str, array.count);
        
        return array.count;
        
    }

}

int main(int argc, const char * argv[])
{

   NSUInteger count = codeLines(@"/Users/unique/Desktop/ios学习");
    
    NSLog(@"%ld", count);
    
    return 0;
}

 

 

黑马程序员----练习:计算整个文件夹的代码行数

原文:http://www.cnblogs.com/unique-ios/p/4358399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!