计算代码行数Demo源码
源码下载:
04-计算代码行数.zip
24.1 KB
//
// main.m
// 计算代码行数
//
// Created by apple on 13-8-12.
//技术博客http://www.cnblogs.com/ChenYilong/新浪微博http://weibo.com/luohanchenyilong
/*
* 考察NSString、NSArray的使用
* 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:@"\n"];
// 删掉文件路径前面的/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\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);
}
////本文永久链接,转载请注明出处: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);
计算代码行数Demo源码的更多相关文章
- php 计算代码行数
<?php header("Content-type:text/html;charset=utf-8"); // php 递归计算文件夹代码行数 function codeL ...
- find命令计算代码行数
[anonymous@localhost ~/lvs/ipvsadm- -regex '.*Makefile.*' -o -regex '.*\.[ch]' -exec cat {} \; | wc ...
- C#计算代码行数
class Program { static void Main(string[] args) { int totalLineCount = 0; string directory; if(args. ...
- vs计算代码行数
1.用vs打开程序 2.编辑——查找——在文件中查找 3.查找内容^b*[^:b#/]+.*$ 应用正则表达式,在整个解决方案中,文件类型空 4.查找全部,仔细盯着右下角数字,查找完毕后会自动消失 ...
- 一个简单的代码计算行数demo编写
最近手头的项目基本上已经完结,历经了5个月的开发和迭代,各种的需求调整,想对自己的代码量进行一个客观的计算,于是抽了点时间写下了这个小demo,朋友们有需要的可以看看,很简单. 基本的思想就是:根目录 ...
- PyQt5学习随笔01--计算一个目录里我们码的代码行数&&PyQt的多线程通信
今天突然想知道自学习Python以来我一共码了多少行代码了,于是写了一个简单的程序: __author__ = 'jiangzhiheng' # coding=utf-8 from PyQt5.QtC ...
- Python计算一个项目中含有的代码行数
最近想要知道以前做过的project有多少行代码,因为文件太多,直接手工数效率太低,于是编写一个python程序用来计算一个project有多少代码行. 首先,在一个项目中,有很多子文件夹,子文件夹中 ...
- python3 计算文件夹中所有py文件里面代码行数,注释行数,空行数
import os,re #代码所在位置 FILE_PATH = './' def analyze_code(codefilesource): ''' 打开一个py文件统计其中的代码行数,包括空格和注 ...
- 【Python基础】计算项目代码行数
统计代码行数 # coding: utf-8 import os import sys import time def get_line_count(file_path): ""& ...
随机推荐
- Word中使用宏调整表格
Dim i As Integer For i = 1 To Selection.Tables.Count Selection.Tables(i).Columns(9).Delete Selecti ...
- [网站日志]今天早上遭遇的CPU 100%情况
今天早上9:06左右,Windows性能监视器监测到主站的Web服务器出现了CPU 100%的情况,伴随着Requests/Sec的上升,详见下图. 上图中红色线条表示的是%Processor Tim ...
- js鼠标事件相关知识
1.mousedown->mouseup依次触发后相当于click事件 2.除了mouseenter和mouseleave外,其它的鼠标事件都是冒泡的 3.mouseover和mouseout事 ...
- Qt 飞机仪表显示
使用Qt简单谢了一个飞机的一小部分仪表,还没有写完,目前只写了一个界面,不过思想应该是一样的. 效果图如下 其中主要由转速表,和下面的部分数字显示构成 转速表代码 .h文件 #ifndef CONTR ...
- 《python核心编程第二版》第5章习题
5-1 整形 讲讲 Python 普通整型和长整型的区别 答:普通整型 32位,长整数类型能表达的 数值仅仅与你的机器支持的(虚拟)内存大小有关 5-2 运算符(a) 写一个函数,计算并返回两个数的乘 ...
- javascript中容易出bug的语句
一.forEach方法 forEach方法中没法用continue来实现跳过单句到下一次循环,如果要跳到下一次循环,要用return关键字,如果想直接跳出forEach循环,具我所知的,要throw一 ...
- svn建立主干和分支在分支上开发然后合并到主干
我们以后打算用svn分支了,如何避免对新事物的恐惧心理呢? 领导: “我们需要慢慢适应,开始的时候我们先用一个项目练手,等熟悉了之后,再把每个项目都建上分支”
- Linux IO乱序
原创翻译,转载请注明出处. 在一些平台,所谓的内存映射I/O在保序执行这方面是没有保障的.在这些平台,驱动写入器负责保证I/O写操作按照预期的顺序写到设备内存映射地址. 代表性的做法是通过读取一个安全 ...
- POI 导入 一直报400问题
排查过程:1.400一般都是参数或者请求不对,但是我这个情况是本地好用,只是服务器有问题,所以排除了传值的格式等问题. 2.服务器和本地网络隔离,所以没办法比较代码,分两次全量覆盖了html和js部分 ...
- PHP变量类型转换
PHP数据类型转换 PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: •(int).(integer):转换成整形 •(float).(double).(real):转换成浮点型 •(s ...