黑马程序员---工具类---OC自定义函数---计算当前路径下所有文件的总行数

------iOS培训、Java培训、Android培训, iOS学习型技术博客,期待与您交流------

计算当前路径下所有文件的总行数

/*

计算当前路径下所有文件的总行数

涉及到NSArray、NSString、NSFileManager

*/

// 计算当前全路径(文件\文件夹)下所有文件的行数

// 接收参数path:文件的全路径(文件、文件夹)

NSUInteger codeLinesCount(NSString *path)

{

// 1.获得文件管理者    单例模式:整个程序的运行过程中,NSFileManager类的对象只有这一个

NSFileManager *fmg = [NSFileManager defaultManager];

// 2.判断path是文件夹还是文件路径

BOOL isDir = NO;  // 标记是否为文件夹

// 路径是否存在(有效)

BOOL isExist = [fmg fileExistsAtPath:path isDirectory:&isDir];

// 3.如果路径不存在,直接返回0退出函数

if (!isExist)

{

NSLog(@"文件路径无效");

return 0;

}

// 路径存在

if (isDir)

{

// 是文件夹

// NSLog(@"是个文件夹");

// 返回  当前路径(该文件夹)目录下所有(路径)---文件、文件夹路径 列表(数组)

// 数组元素  并不是全路径

NSArray *filePathsList = [fmg contentsOfDirectoryAtPath:path error:nil];

// NSLog(@"%@", filePathsList);

NSUInteger count = 0;   // 行数

// 遍历数组中的所有路径(文件名\文件夹名)

for (NSString *filePath in filePathsList)

{

// 拼接全路径  当前路径文件夹(子文件\子文件夹)的全路径

NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filePath];

// NSLog(@"%@", fullPath);

/*

此处 递归

调用本身  返回  每个最终子文件的行数

codeLinesCount(fullPath);

*/

// 把每个最终子路径文件的行数  累加每个子路径的总行数

count += codeLinesCount(fullPath);

}

return count;

}

else

{   // 是个文件

// NSLog(@"是个文件");

// 1.加载文件内容,到一个字符串对象

NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

// 2.将文件内容(字符串内容)以‘\n‘每一行进行 切分, 切分好后的内容放入数组 返回

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

// 每一个数组元素都是一个NSString对象,就是文件中一行的内容

//        int i = 0;

//        for (NSString *str in array)

//        {

//            i++;

//            NSLog(@"%d---%@",i, str);

//        }

return array.count;     // 数组元素个数就是行数

}

}

时间: 2024-08-05 03:53:59

黑马程序员---工具类---OC自定义函数---计算当前路径下所有文件的总行数的相关文章

黑马程序员——工具类Collections的使用

工具类Collections的使用 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class CollectionsDemos { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> al = new ArrayList

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

黑马程序员学习笔记-OC之foundation框架

黑马程序员学习笔记-OC之foundation框架 1.简介:foundation框架是其它所有ios框架的基础,包含了很多常用类型,结构体.枚举.类等. 2. 结构体:NSRange表示范围的结构体. NSPoint/CGPoint表示坐标点的结构体 NSSize/CGSize表示宽高的结构体 NSRect/CGRect表示坐标点+宽高的结构体 3. 类字符串:NSString  字符串类 NSMUtableString  易变字符串类 NSArray         数组类 NSMUtabl

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

黑马程序员—12-oc类跟对象

一.类和对象的关系 面向对象中有2个非常重要的概念:类和对象 1. 如何创建对象 1)  面向对象解决问题的时候必须有对象,那如何创建对象呢? 2)  现实生活的例子:如何创造汽车对象? a)   需要先有汽车的建造图纸,图纸上描述清楚汽车应该具备的属性和功能(行为) Ø   属性:轮子数.时速 Ø   功能(行为):跑 b)   然后再根据图纸上的描述生成汽车 c)   每一辆汽车都是对象,都有自己具体的属性值,都是图纸的实例 d)   图纸是抽象的,房子是具体的.图纸是对房子对象的高度概括

黑马程序员_类对象创建代码的执行顺序测试总结

class StaticCode { // 类的非静态成员变量(实例变量)定义语句: // 作用:用来存储对象的特有数据的成员变量. // 运行:当类对象被创建时就执行,按照顺序自上而下执行,和构造代码块平级.(即当有多个构造函数 // 代码块和多个非静态成员变量时,JVM按照自上而下的顺序来执行所有语句,包括构造代码块里的代码 // 和非静态成员的声明.) // 存储位置:非静态变量位于堆内存中的对象实体中. int num = 3; // 构造代码块 { System.out.println

黑马程序员——简单的OC程序

知识点 1.#import的用途: 1> 跟#include一样,拷贝文件的内容 2> 可以自动防止文件的内容被重复拷贝 2.#import <Foundation/NSObjCRuntime.h> NSObjCRuntime.h中有NSLog函数的声明 3.Foundation框架头文件的路径 1> 右击Xcode.app --> 显示包内容 2> Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/

黑马程序员_File类与递归

一.概述: 1.File类:在整个IO包中与文件本身有关的操作类,所有的与文件本身有关指的是创建.删除文件等操作.在java.io包中的File类本身是一个跨平台的文件操作类,所以在操作中要更多的考虑到各个操作系统的区别. 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File对象可以作为多数传递给流的构造函数 二.常用方法: File类 File 即指文件也指文件夹. File类构造方法和字段摘要 staticString pathSeparat

黑马程序员--OC基础--NSFileManager用法深入

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- /* NSFileManager用法深入一 用于文件访问:获取文件.文件夹的属性和子目录的信息 */ 1 #import <Foundation/Foundation.h> 2 3 int main() { 4 @autore