OS开发之oc(计算代码行数)--NSString、NSArray、NSFileManager的使用

直接上代码也

// 计算文件的代码行数
#import <Foundation/Foundation.h>

/*
 path : 文件的全路径(可能是文件夹、也可能是文件)
 返回值 int :代码行数
 */
NSUInteger codeLineCount(NSString *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:@"\n"];

        // 删掉文件路径前面的/Users/apple/Desktop/iOS/共享/
        NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS/共享/"];
        NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];

        // 打印文件路径和行数
        NSLog(@"%@ - %ld", str, array.count);

        return array.count;
    }
}

int main()
{

    NSUInteger count = codeLineCount(@"/Users/apple/Desktop/iOS/共享");

    NSLog(@"%ld", count);
    return 0;
}

void test()
{
    NSString *str = @"jack\nrose\njim\njake";

    [str writeToFile:@"/Users/apple/Desktop/abc.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

    NSArray *array = [str componentsSeparatedByString:@"\n"];

    for (NSString *line in array)
    {
        NSLog(@"%@", line);
    }

    //int count = codeLineCount(@"/Users/apple/Desktop/iOS/共享/1220/代码/08-block/08-block/main.m");

    //NSLog(@"count=%d", count);
}
时间: 2024-11-05 15:30:39

OS开发之oc(计算代码行数)--NSString、NSArray、NSFileManager的使用的相关文章

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

用到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){ // 获得文件管理者 NSFile

php 计算代码行数

<?php header("Content-type:text/html;charset=utf-8"); // 计算行数 function codeLine($file){ return count(file($file)); } $lines = 0; // 递归目录 function forDir($path){ // if(!is_dir($path)){ // return null; // } $dh = opendir($path); while(($dir = r

C#计算代码行数

class Program { static void Main(string[] args) { int totalLineCount = 0; string directory; if(args.Length>0) { directory = args[0]; } else { directory = Directory.GetCurrentDirectory(); } directory = @"F:\workdocs"; Console.WriteLine(directo

计算代码总行数

如何通过IO实现计算代码行数 利用BufferReader特有的readline方法计算首先创建一个方法计算 package revie_Io; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Count { static int

[OC Foundation框架 - 20] 统计代码行数

注意: 1.变量名和函数名不要混淆调用 2.不要对文件夹进行文件的操作,没有权限 3.递归调用注意初始化变量 1 // 2 // main.m 3 // CodeLineCount 4 // 5 // Created by hellovoidworld on 14-11-18. 6 // Copyright (c) 2014年 com.hellovoidworld. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>

Python学习教程:如何用python统计代码行数

Python学习教程:如何用python统计代码行数 改良后的代码可以对python和C系列的代码实行行数计算,包括代码.空行和注释行,用re抓取注释,传入一个目录自动对其下的文件进行读取计算 流程 首先判断传入参数是否为文件夹,不是则打印出提示,否则继续(无返回),获得目录后,yongos.listdir对路径下文件进行遍历,其中也包含文件夹,再次判断是否为文件夹,是的话则递归调用此函数,否则开始执行行数统计,这里用os.path.join将路径与文件名进行拼接,方便之后直接传给函数,逻辑很简

VS统计代码行数 CTRL+SHIFT+F

1.CTRL+SHIFT+F (Find in files),打开查找功能(如果打不开查看本文最后)2. 勾选 使用:正则表达式,3. 搜索内容: ^:b*[^:b#/]+.*$ #开头和/开头或者空行都不计入代码量. ^:b*[^:b#/*]+.*$ *开头和#开头和/开头或者空行都不计入代码量. 4. 最后一行就是代码行数了. 匹配行:    匹配文件:    合计搜索文件: ----------------------------------------------------------

一个统计自己代码行数的脚本

最近心血来潮,想看看自己平时写的乱七八糟的代码都有多少行了,就写了这个脚本.因为我的代码都写在了一个总目录里面,所以统计起来还算比较方便. 统计脚本是用shell写的,支持4个参数,-[qQhd],其中 h :为帮助参数,显示如下的帮助信息 $ cntline.sh -h Usage : cntline.sh -[qQhd] -q : not show dir -Q : not show file name -h : show this help message -d : only show d

python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)

1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: 1 #coding: utf-8 2 import os, re 3 4 # 代码所在目录 5 FILE_PATH = './' 6 7 def analyze_code(codefilesource): 8 ''' 9 打开一个py文件,统计其中的代码行数,包括空行和注释 10 返回含该文件总行数,注释行数,空行数的列表 11 ''' 12 total_line = 0 13