OC 学习笔记3 文件夹下所有.txt文件的行数

来源:互联网 发布:mac版ps怎么安装字体 编辑:程序博客网 时间:2024/05/18 00:22

#import <Foundation/Foundation.h>

NSUInteger InDictionary(NSString*);

NSUInteger InFile(NSString*);


int main(int argc,const char * argv[]) {

    @autoreleasepool {

        NSString* path;//文件路径

        NSLog(@"%lu",InDictionary(path));

    }

    return 0;


}


NSUInteger InDictionary(NSString* path){

    //NSFileManager是单例模式 [[NSFileManager alloc] init]不起作用,整个类中只有一个对象

    NSFileManager* fileManager = [NSFileManagerdefaultManager];

    BOOL isDir = YES;

    BOOL exist = [fileManager fileExistsAtPath:path isDirectory:&isDir];

    //先判断文件是不是存在,在判断是不是路径

    if(!exist){

        NSLog(@"文件路径不存在");

        return 0;

    }

    if(isDir){

        int count = 0;

        //目录

        //目录中的所有相对路径,注意是相对路径,所以还要设置一个全路径

        NSArray* pathContents = [fileManager contentsOfDirectoryAtPath:path error:nil];

        for (int i =0; i<pathContents.count; i++) {

            //用这种方法设置全路径

            NSString* fullPath = [NSStringstringWithFormat:@"%@/%@",path,pathContents[i]];

            count+=InDictionary(fullPath);

        }

        return count;

    }

    else{

        // 不是目录

        return InFile(path);

    }

    return 0;

}

NSUInteger InFile(NSString* path){

    //文件的拓展名是txt h m c cpp mm才行(不是.txt .h .c .cpp .m .mm

    NSString* extentName = [path pathExtension];

    if(![extentName isEqualTo:@"txt"]){

        return 0;

    }

    NSString* content = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncodingerror:nil];

    //"\n"把文件的内容分割,数组的每一项内容就是文件的每一行内容(array[0]就是文件的第一行的内容),所以数组的个数就是文件的行数

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

    return array.count;

}



0 0
原创粉丝点击