zoukankan      html  css  js  c++  java
  • 计算代码行数Demo源码

    源码下载:04-计算代码行数.zip
    24.1 KB

    //
    //  main.m
    //  计算代码行数
    //
    //  Created by apple on 13-8-12.
    //技术博客http://www.cnblogs.com/ChenYilong/新浪微博http://weibo.com/luohanchenyilong

    //

    /*
     *
     考察NSStringNSArray的使用
     * NSFileManager
     */


    #import <Foundation/Foundation.h>


    // 计算文件的代码行数
    /*
     path :
     文件的全路径(可能是文件夹、也可能是文件)
     
    返回值 int :代码行数
     */

    NSString *oldPath;
    NSUInteger codeLineCount(NSString *path)
    {
       
     if (!oldPath) oldPath = path;
       
     // 1.获得文件管理者
        NSFileManager *mgr = [NSFileManager defaultManager];
       
       
     // 2.标记是否为文件夹
       
     BOOL dir = NO; // 标记是否为文件夹
       
     // 标记这个路径是否存在
       
     BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
       
       
     // 3.如果不存在,直接返回0
       
     if(!exist)
        {
            NSLog(
    @"文件路径不存在!!!!!!");
           
     return 0;
        }
       
       
     // 代码能来到着,说明路径存在
       
       
       
     if (dir)
        {
     // 文件夹
           
     // 获得当前文件夹path下面的所有内容(文件夹、文件)
            NSArray *array = [mgr contentsOfDirectoryAtPath:path error:
    nil];
           
           
     // 定义一个变量保存path中所有文件的总行数
           
     int count = 0;
           
           
     // 遍历数组中的所有子文件(夹)名
           
     for (NSString *filename in array)
            {
               
     // 获得子文件(夹)的全路径
                NSString *fullPath = [NSString stringWithFormat:
    @"%@/%@", path, filename];
               
               
     // 累加每个子路径的总行数
                count += codeLineCount(fullPath);
            }
           
           
     return count;
        }
       
     else
        {
     // 文件
           
     // 判断文件的拓展名(忽略大小写)
            NSString *extension = [[path pathExtension] lowercaseString];
           
     if (![extension isEqualToString:@"h"]
                && ![extension isEqualToString:
    @"m"]
                && ![extension isEqualToString:
    @"c"])
            {
               
     // 文件拓展名不是h,而且也不是m,而且也不是c
               
     return 0;
            }
           
           
     // 加载文件内容
            NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:
    nil];
           
           
     // 将文件内容切割为每一行
            NSArray *array = [content componentsSeparatedByString:
    @" "];
           
           
     // 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/
            NSRange range = [path rangeOfString:oldPath];
            NSString *str = [path stringByReplacingCharactersInRange:range withString:
    @""];
           
           
     // 打印文件路径和行数
            NSLog(
    @"%@ - %ld", str, array.count);
           
           
     return array.count;
        }
    }

    int main()
    {
       
        NSUInteger count = codeLineCount(
    @"/Users/apple/Desktop/hhbb");
       
        NSLog(
    @"%ld", count);
       
     return 0;
    }

    void test()
    {
        NSString *str =
     @"jack rose jim jake";
       
        [str writeToFile:
    @"/Users/apple/Desktop/abc.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
       
       
        NSArray *array = [str componentsSeparatedByString:
    @" "];
       
       
     for (NSString *line in array)
        {
            NSLog(
    @"%@", line);
        }
       
       ////本文永久链接,转载请注明出处:http://www.cnblogs.com/ChenYilong/p/3490566.html
       
     //int count = codeLineCount(@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/0811/代码/04-block/04-block/main.m");
       
       
     //NSLog(@"count=%d", count);
    }


    作者:
    出处:http://www.cnblogs.com/ChenYilong/(点击RSS订阅)
    本文版权归作者和博客园共有,欢迎转载,
    但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    2月2日学习记录
    Python爬虫学习(三)使用Scrapy库
    2月1日学习记录
    Python爬虫学习(二)使用re库
    Python爬虫学习(二)使用Beautiful Soup库
    Python爬虫学习(一)使用requests库和robots协议
    spark学习(五)RDD
    body内常用标签--form表单
    body内常用标签
    HTTP协议
  • 原文地址:https://www.cnblogs.com/ChenYilong/p/3490566.html
Copyright © 2011-2022 走看看