IOS学习--Foundation--计算文件中得代码行数(小练习)

//
//  main.m
//  03--计算文件中得代码行数
//
//  Created by LeeWong on 14-10-25.
//  Copyright (c) 2014年 LeeWong. All rights reserved.
//

#import <Foundation/Foundation.h>
/*
//计算单个文件的行数
NSUInteger codeLineCount(NSString *path)
{
    //读出文件的内容
    NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    
    //输出字符串内容进行验证 是否正确读出文件内容
    NSLog(@"%@",str);

       //将读出的文件内容一'\n'分开
    NSArray *array = [str componentsSeparatedByString:@"\n"];
    
    for( NSString *obj in array)
    {
        NSLog(@"%@",obj);
    }

    return array.count;
}
*/

//计算某个文件夹下所有文件的行数
NSInteger codeLineCount(NSString *path)
{
    //新建一个文件管理这
    NSFileManager *mgr = [NSFileManager defaultManager];
    
    BOOL dir = NO;
    //判断传入的路径是否合理
    BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
    if(!exist)
    {
        //文件不存在 退出程序
        NSLog(@"文件不存在");
        return 0;
    }
    
    
    
    //路径合理 判断路径是一个文件还是文件夹
    if(dir == YES)
    {
        
        int count = 0;//该文件夹中得文件数为0

        //这是一个文件夹
        //读取这个文件夹中得文件 存放于数组之中
        
        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
        //输出这个数组中得内容
        for(NSString *filename in array)
        {            //输出其路径
            //NSLog(@"%@%@",path,filename);
            //拼接成全路径
            NSString *fullpath = [NSString stringWithFormat:@"%@/%@",path,filename];
            
            //递归调用本函数codelinecount计算行数
            count += codeLineCount(fullpath);
           
        }
         return count;
        
    }
    else
    {
        //只计算后缀为.h .m .c的文件
        //取出该文件的后缀
        NSString *extension = [[path pathExtension] lowercaseString];
        
        if(![extension isEqualToString:@"m"] && [extension isEqualToString:@"h"] && [extension isEqualToString:@"c"])
        {
            return 0;
        }
        
        //NSLog(@"%@",extension);

        //这是一个文件
        //读出文件的内容
        NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        
        //输出字符串内容进行验证 是否正确读出文件内容
       // NSLog(@"%@",str);
        
        //将读出的文件内容一'\n'分开
        NSArray *array = [str componentsSeparatedByString:@"\n"];
        
       /* for( NSString *obj in array)
        {
            NSLog(@"%@",obj);
        }
        */
        //打印出每个文件的 文件名 跟行数
        //NSLog(@"%@  %ld",path,array.count);
        //上面的方法打印文件路径过于冗余  修改简单
        
        //先计算 荣誉路径的范围
        NSRange range = [path rangeOfString:@"/Users/LeeWong/Desktop/project"];
        NSString *newpath = [path stringByReplacingCharactersInRange:range withString:@" "];
        NSLog(@"%@--%ld",newpath,array.count);
        return array.count;

    }
}

int main() {

    //调用函数
    NSUInteger linecount = codeLineCount(@"/Users/LeeWong/Desktop/project");
    NSLog(@"%ld",linecount);
   
    return 0;
}

void test()
{
    NSUInteger line = codeLineCount(@"/Users/LeeWong/Desktop/1.txt");
    NSLog(@"the line of this program is %ld",line);
} 

 main.m// 03--计算文件中得代码行数 Created by LeeWong on 14-10-25.// Copyright (c) 2014年 LeeWong. All rights reserved.//#import /*//计算单个文件的行数NSUInteger codeLineCount(NSString *path){ //读出文件的内容 NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //输出字符串内容进行验证 是否正确读出文件内容 NSLog(@"%@",str); //将读出的文件内容一'\n'分开 NSArray *array = [str componentsSeparatedByString:@"\n"]; for( NSString *obj in array) { NSLog(@"%@",obj); } return array.count;}*///计算某个文件夹下所有文件的行数NSInteger codeLineCount(NSString *path){ //新建一个文件管理这 NSFileManager *mgr = [NSFileManager defaultManager]; BOOL dir = NO; //判断传入的路径是否合理 BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir]; if(!exist) { //文件不存在 退出程序 NSLog(@"文件不存在"); return 0; } //路径合理 判断路径是一个文件还是文件夹 if(dir == YES) { int count = 0;//该文件夹中得文件数为0 //这是一个文件夹 //读取这个文件夹中得文件 存放于数组之中 NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; //输出这个数组中得内容 for(NSString *filename in array) { //输出其路径 //NSLog(@"%@%@",path,filename); //拼接成全路径 NSString *fullpath = [NSString stringWithFormat:@"%@/%@",path,filename]; //递归调用本函数codelinecount计算行数 count += codeLineCount(fullpath); } return count; } else { //只计算后缀为.h .m .c的文件 //取出该文件的后缀 NSString *extension = [[path pathExtension] lowercaseString]; if(![extension isEqualToString:@"m"] && [extension isEqualToString:@"h"] && [extension isEqualToString:@"c"]) { return 0; } //NSLog(@"%@",extension); //这是一个文件 //读出文件的内容 NSString *str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //输出字符串内容进行验证 是否正确读出文件内容 // NSLog(@"%@",str); //将读出的文件内容一'\n'分开 NSArray *array = [str componentsSeparatedByString:@"\n"]; /* for( NSString *obj in array) { NSLog(@"%@",obj); } */ //打印出每个文件的 文件名 跟行数 //NSLog(@"%@ %ld",path,array.count); //上面的方法打印文件路径过于冗余 修改简单 //先计算 荣誉路径的范围 NSRange range = [path rangeOfString:@"/Users/LeeWong/Desktop/project"]; NSString *newpath = [path stringByReplacingCharactersInRange:range withString:@" "]; NSLog(@"%@--%ld",newpath,array.count); return array.count; }}int main() { //调用函数 NSUInteger linecount = codeLineCount(@"/Users/LeeWong/Desktop/project"); NSLog(@"%ld",linecount); return 0;}void test(){ NSUInteger line = codeLineCount(@"/Users/LeeWong/Desktop/1.txt"); NSLog(@"the line of this program is %ld",line);}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值