欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

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

来源: 开发者 投稿于  被查看 38079 次 评论:32

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


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


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

相关频道:

用户评论