/*
考察NSString NSArray
NSFileManager
*/
#import <Foundation/Foundation.h>
/*
计算单个文件的代码行数 path:文件的全路径
返回值 代码行数
*/
int codeLineCounts(NSString *path)
{
//判断文件的后缀pathExtension 并转化为小写
NSString *extension = [[path pathExtension]lowercaseString];
//判断文件后缀是否是m
if (![extension isEqualTo:@"m"])
{
return ;
}
//1.从文件中读入内容存入到字符串中
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//2.通过字符分割,将分割好的内容存入到数组中
NSArray * array = [content componentsSeparatedByString:@"\n"];
//3.数组的大小就是 文件的代码行数
NSUInteger counts = array.count;
//4.将路径/Users/mqy/Desktop/练习代码/ 替换为空
NSString *subPath = [path stringByReplacingCharactersInRange:[path rangeOfString:@"/Users/mqy/Desktop/练习代码/"] withString:@""];
//输出文件路径和代码行数
NSLog(@"%@ --%ld",subPath,counts);
return (int)counts;
}
/*
计算文件或者文件夹里面的代码行数 */
NSUInteger codeLineCount(NSString *path)
{
//1.首先获得文件管理者
NSFileManager *mger = [NSFileManager defaultManager];
//2.判断路径的有效性,路径是否存在,不存在return
BOOL dir = NO;//标记是否为文件夹
BOOL exist = [mger fileExistsAtPath:path isDirectory:&dir];
//3.如果路径不存在log输出 return
if(!exist)
{
NSLog(@"文件路径不存在,请查看");
return ;
}
//4.如果路径存在判断是文件夹 还是文件 dir为yes 则为文件夹
if (dir)
{
int count = ;
//5.如果是文件夹,遍历文件夹获取文件夹里面信息
NSArray *contentList = [mger contentsOfDirectoryAtPath:path error:nil];
//6.遍历数组
for (NSString *fileName in contentList)
{
//7.获取文件的全路径
NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,fileName];
//8.获取文件下的代码行数 SUM
count += codeLineCount(fullPath); }
return count; }else
{
return codeLineCounts(path);
}
return ;
} int main(int argc, const char * argv[])
{
NSString *path = @"/Users/mqy/Desktop/练习代码"; NSUInteger lineCounts = codeLineCount(path);
NSLog(@"代码行数是:%ld",lineCounts); return ;
}

OC获取文件(夹)的代码行数的更多相关文章

  1. 【原】Mac下统计任意文件夹中代码行数的工

    [链接][原]Mac下统计任意文件夹中代码行数的工http://www.cnblogs.com/wengzilin/p/4580646.html

  2. 【原】Mac下统计任意文件夹中代码行数的工具——cloc

    这里介绍一个Mac系统统计代码行数的工具cloc. 1.首先,安装homebrew,已安装的请跳过. 打开终端工具Terminal,输入下列命令.过程中会让你按RETURN键以及输入mac桌面密码,按 ...

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

    注意: 1.变量名和函数名不要混淆调用 2.不要对文件夹进行文件的操作,没有权限 3.递归调用注意初始化变量   // // main.m // CodeLineCount // // Created ...

  4. Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)

    要求:统计一个src文件下的所有.java文件内的代码行数(注释行.空白行不统计在内) 分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数.使用字符缓冲流读取文件,首先判断是否是块注释 ...

  5. Linux统计目录下文件个数及代码行数

    1. 统计当前目录下,php文件数量 find ./ -name "*.php" | wc -l 2. 统计当前目录下所有php文件代码行数 find ./ -name " ...

  6. 利用Clojure统计代码文件数量和代码行数

    ;; 引入clojure的io包 (use '[clojure.java.io]) ;; 遍历目录将所有符合要求的文件做为列表返回 (defn walk [dirpath pattern] (doal ...

  7. 统计py文件或目录代码行数

    bug:当遇到3个"""时 可能会将下面的代码不计入代码总行数 import os def count_path(path,countcode): if os.path. ...

  8. Linux统计文件个数或是代码行数

    统计指定后缀名的文件总个数命令: find . -name *.cpp | wc -l 统计一个目录下代码总行数以及单个文件行数: find . -name *.h | xargs wc -l lin ...

  9. iOS 统计Xcode整个工程的代码行数

    小技巧5-iOS 统计Xcode整个工程的代码行数 1.打开终端 2.cd 空格 将工程的文件夹拖到终端上,回车,此时进入到工程的路径 此时已经进入到工程文件夹下 3.运行指令 a. find . - ...

随机推荐

  1. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析--转载

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  2. POJ 1988

    #include<iostream> #include<stdio.h> #include<algorithm> #define MAXN 30005 using ...

  3. Windows Server2008+IIS7部署网站的日期格式问题

    最近部署一个ASP网站,发现网站的某个功能上的日历在原来的服务器上访问时是会根据特定日期来对该日进行加粗加红显示的,但部署到我公司机房的win2008服务器上访问时却没有这效果了. 于是通过本地部署, ...

  4. App接口设计1

    http://blog.csdn.net/newjueqi/article/details/44062849 http://www.tuicool.com/articles/YNZBna http:/ ...

  5. JS之事件(一)

    事件:交互 异步监听,不是JS引擎监听的 一.绑定 1.ele.onxxxx(eg:onclick) = function (e) { //回调函数/事件处理函数 } 兼容性很好,但同一个事件仅能绑定 ...

  6. Windows 下 玩转Node.JS

    vs一直是用的比较舒服的IDE,一直期望可以支持Node.JS.终于找到了一个工具 NTVS(Node.JS Tool For VS). 主页:https://nodejstools.codeplex ...

  7. JavaWeb项目开发案例精粹-第4章博客网站系统-003Dao层

    1. package com.sanqing.dao; import java.util.List; import com.sanqing.fenye.Page; import com.sanqing ...

  8. RxJava+Retrofit+MVP构建的App——聚合资讯

    RtfRxMVP 聚合资讯APP,提供热点资讯,天气预报以及笑话精选服务,使用 Retrofit + RxJava + MVP 构建代码. Hello U 这是我的一个练习项目,第一次尝试运用 MVP ...

  9. 配置Linux系统网卡连接网络

    本实验需要两台虚拟机来完成,环境如下: 主机名称 操作系统 ip地址 本地主机 RHEL7_64 192.168.157.134 -> 192.168.129.127 远程主机 CentOS 6 ...

  10. SparkContext和RDD

    SparkContext.scala实现了一个SparkContext的class和object,SparkContext类似Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量等. ...