第十七篇:计算代码行数练习代码

用到Foundation中的一些类:

NSManager

NSString

NSArray

//
//  main.m
//  10-计算代码行数
//
//  Created by xxx on 15/9/16.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>


int countLineOfFile(NSString * path){
    // 获得文件管理者
    NSFileManager * manager = [NSFileManager defaultManager];
    // 判断path是不是一个可计算的文件的路径
    BOOL  isFile = NO;
    BOOL exist = [manager fileExistsAtPath:path isDirectory:&isFile];
    if (!exist) { // path的文件路径不存在
        return 0;
    }
    // 如果路径存在
    if (isFile) { // path 下的路径是文件夹
        // 获得当前文件夹下的所有内容:文件夹及文件
        NSArray * fileArray = [manager contentsOfDirectoryAtPath:path error:nil];
        int count = 0;
        // 查看所有的文件和文件夹
        for ( NSString * file in fileArray) {
            count += countLineOfFile([NSString stringWithFormat:@"%@/%@",path,file]);
        }
        
        return count ;
    }
    else{
        // 获得文件的扩展名
        NSString * extension = [path pathExtension];
        if(!([extension isEqualToString:@"h"]
             || [extension isEqualToString:@"m"]
             || [extension isEqualToString:@"c"]
             || [extension isEqualToString:@"cpp"]))
            return 0;
        // 获得文件路径为path的文件中所有内容
        NSString * fileConten = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        // 一个字符串用'\n'来划分成多个字符串,即每一行作为一个字符串
        NSArray * array = [fileConten componentsSeparatedByString:@"\n"];
        
//        for(NSString * str in array)
//            NSLog(@"%@",str);
        
        return (int)array.count ;
    }
}

int main(int argc, const char * argv[]) {
    
    // 统计一个文件或文件夹中的代码行数,包括空行
    int count = countLineOfFile(@"/Users/qujie/Documents/OC程序/10-计算代码行数");
    NSLog(@"count = %d",count);
    
//    NSString * str = @"123-456-789";
//    NSArray * array = [str componentsSeparatedByString:@"-"];
//    NSLog(@"%@",array);
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值