//
// main.m
// 计算代码行数
//
// Created by apple on 13-8-12.
// Copyright (c) 2013年 apple. All rights reserved.
//
#import <Foundation/Foundation.h>
// NSFileManger ,NSString ,NSArray 类的使用
// 计算单个文件的代码行数 (可能是文件 可能是文件夹)
// path :文件的全路径 返回值: int
int codeLineCount(NSString *path)
{
// NSFileManger 是单粒对象
NSFileManager *mgr = [NSFileManager defaultManager];
// 判断path 是文件还是文件夹
BOOL dir = NO;// 标记是否为文件夹
// 判断 这个路径是否存在
BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
// 如果不存在 ,直接返回 0
if(!exist)
{
NSLog(@"该路径不存在");
return 0;
}
if (dir) {
NSLog(@"是文件夹");
NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
//NSLog(@"%@",array);
int sum = 0;
for(NSString *filename in array)
{
// 子文件夹 的全路径
NSString *fullname = [NSString stringWithFormat:@"%@/%@",path,filename];
sum += codeLineCount(fullname);
}
return sum;
}
else
{
NSLog(@"是文件");
// 判断文件拓展名
NSString *extentsion = [[path pathExtension] lowercaseString];
NSLog(@"%@",extentsion);
if(![extentsion isEqualToString:@"h"]&& ![extentsion isEqualToString:@"m"]&& ![extentsion isEqualToString:@"c"]&& ![extentsion isEqualToString:@"docx"])
{
return 0;
}
// 读取文件(加载文件内容)
NSString *contents = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
// NSLog(@"%@",contents);
// 用 \n 分割文件
NSArray * array = [contents componentsSeparatedByString:@"\n"];
// for(id obj in array)
// {
// NSLog(@"%@",obj);
// }
NSRange range = [path rangeOfString:@"Users/apple/Desktop/"];
NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"%@ %zd",str, array.count);
// return (int)contents.length;
return (int)array.count;
}
// 文件的分割数 就是 文件的行数
}
int main(int argc, const char * argv[])
{
// NSString *str = @"jak\njdfs";
// [str writeToFile:@"/Users/apple/Desktop/data.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
int count = codeLineCount(@"/e:/a.rtf");
NSLog(@"行数为~~%d",count);
return 0;
}
利用Foundation框架写的小程序统计文件(文件夹内文件)的所有行数(或统计字数)
最新推荐文章于 2021-12-17 14:34:43 发布