MacOS 开发
来源:互联网 发布:上海 现代建筑 知乎 编辑:程序博客网 时间:2024/06/14 08:22
- 一核心代码
- 1获取全路径下该文件的行数
- 2获取全路径下该文件夹下全部文件的行数总和
- 3获取inpath 路径下面所有合格hm的文件路径
- 4打开选择文件夹
- 二推荐 Demo - PPRows
一、核心代码
1、获取全路径下该文件的行数
#pragma mark - 获取全路径下该文件的行数- (int)rows:(NSString *)filepath{ char c; int h = 0; FILE *fp; fp = fopen([filepath UTF8String], "r"); if (fp == NULL){ return -1; } while ((c = fgetc(fp)) != EOF) { if (c == '\n') h++; else { c = fgetc(fp);//这里处理最后一行可能没有换行标记 if (c == EOF){ h++; break; } else if (c == '\n') h++; } } return h;}
2、获取全路径下该文件夹下全部文件的行数总和
#pragma mark - 获取全路径下该文件夹下全部文件的行数总和- (void)getNumsOfFilePath:(NSString *)filePath{ NSLog(@"文件路径:%@", filePath); self.pathLabel.stringValue = filePath; //检查文件是否存在 NSFileManager *filemanager = [NSFileManager defaultManager]; if ([filemanager fileExistsAtPath:filePath]) { int num = 0; NSArray *arr = [self GetAllDirInPath:filePath]; for (NSString *inpath in arr) { num += [self rows:inpath]; } self.rowsLabel.stringValue = [NSString stringWithFormat:@"总行数: %d", num]; } else { self.rowsLabel.stringValue = @"请选择正确的路径"; }}
3、获取inpath 路径下面所有合格(.h/.m)的文件路径
#pragma mark - 获取inpath 路径下面所有合格(.h/.m)的文件路径- (NSArray *)GetAllDirInPath:(NSString *)inpath{ NSFileManager *fileManager = [NSFileManager defaultManager]; NSMutableArray *dirArray = [[NSMutableArray alloc] init]; BOOL isDir = NO; [fileManager fileExistsAtPath:inpath isDirectory:(&isDir)]; if (isDir == NO){ if ([self checkClassFile:inpath]){ [dirArray addObject:inpath]; } } isDir = NO; NSError *error = nil; NSArray *fileList = nil; //fileList便是包含有该文件夹下所有文件的文件名及文件夹名的数组 fileList = [fileManager contentsOfDirectoryAtPath:inpath error:&error]; //在上面那段程序中获得的fileList中列出文件夹名 for (NSString *file in fileList) { NSString *path = [inpath stringByAppendingPathComponent:file]; [fileManager fileExistsAtPath:path isDirectory:(&isDir)]; if (!isDir) { if ([self checkClassFile:path]){ [dirArray addObject:path]; } } else { [dirArray addObjectsFromArray:[self GetAllDirInPath:path]]; } isDir = NO; }// NSLog(@"dirArray : %@",dirArray); return dirArray;}#pragma mark - 检查文件后缀名- (BOOL)checkClassFile:(NSString *)filePath { NSString *extensionName = [filePath pathExtension]; // NSLog(@"后缀名:%@", extensionName); if ([extensionName isEqualToString:@"h"] || [extensionName isEqualToString:@"m"]){ return YES; } return NO;}
4、打开选择文件夹
这里只选择了一个文件夹,你也可以改为多选。
- (void)pickFile{ NSOpenPanel* panel = [NSOpenPanel openPanel]; [panel setAllowsMultipleSelection:YES]; //是否允许多选file [panel setCanChooseFiles:YES]; [panel setCanChooseDirectories:YES]; [panel beginWithCompletionHandler:^(NSInteger result) { if (result == NSOKButton) { NSMutableArray* filePaths = [[NSMutableArray alloc] init]; for (NSURL* elemnet in [panel URLs]) { [filePaths addObject:[elemnet path]]; } NSLog(@"filePaths : %@",filePaths); if (filePaths.count > 0) { [self getNumsOfFilePath:filePaths.firstObject]; } } }];}
二、推荐 Demo - PPRows
GitHub 上搜索,即可下载。可拖拽选择文件夹,界面效果如下:
阅读全文
0 0
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- 线程初步(二)
- MyBatis Generator系列(三)----修改源码实现中文注释
- 用正则写了小区判断,回忆了一点正则知识
- 【精华】PS快捷键及小技巧集锦
- jQuery实现全选功能
- MacOS 开发
- source insight窗口恢复默认
- 【51 nod 1090 三个数和为0】
- jQuery实现列表无缝滚动
- 如何判断一个对象中有汉字,数字,大写字母,小写字母?
- 用JavaScript代码编写选项卡
- Codeblocks 批量注释与对齐快捷键
- linux上安装maven
- 聊聊RESTful