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

来源:互联网 发布:cpu 编程 英语 编辑:程序博客网 时间:2024/06/07 05:22

////  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
原创粉丝点击