A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 supergcs 于 2014-11-13 23:45 编辑

  1. NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。

  2. <img src="http://bbs.itheima.com/forum.php?mod=image&aid=58122&size=300x300&key=5861233673c83d31&nocache=yes&type=fixnone" border="0" aid="attachimg_58122" alt="">

  3. 一、NSFileManager相关操作
  4. 创建NSFileManager对象
  5. NSFileManager *filemgr;  
  6. filemgr = [NSFileManager defaultManager];

  7. 检查文件是否存在
  8. if ([filemgr fileExistsAtPath: @"/tmp/myfile.txt" ] == YES)  
  9.         NSLog (@"File exists");  
  10. else  
  11.         NSLog (@"File not found");
  12. 检查两个文件内容是否一致
  13. if ([filemgr contentsEqualAtPath: @"/tmp/myfile.txt" andPath: @"/tmp/sales.txt"] == YES)  
  14.         NSLog (@"File contents match");  
  15. else  
  16.         NSLog (@"File contents do not match");

  17. 检查文件可读性
  18. if ([filemgr isWritableFileAtPath: @"/tmp/myfile.txt"]  == YES)  
  19.         NSLog (@"File is writable");  
  20. else  
  21.         NSLog (@"File is read only");  

  22. 复制文件
  23. if([filemgr copyItemAtPath:fPathName toPath:@"newFile" error:NULL]==NO)
  24. {
  25.             NSLog(@"复制文件失败!");
  26. }

  27. 重命名文件名称
  28. if([filemgr moveItemAtPath:@"newFile" toPath:@"newFile2" error:NULL]==NO)
  29. {
  30.             NSLog(@"文件重命名失败!");
  31. }

  32. 打印文件内容
  33. NSLog(@"Current:%@",[NSString stringWithContentsOfFile:@"newFile2" encoding:NSUTF8StringEncoding error:NULL]);

  34. 读取文件属性(字典属性)
  35. NSDictionary *attr; // 属性
  36. if((attr = [filemgr attributesOfItemAtPath:@"newFile2" error:NULL]) == nil){
  37.         {
  38.             NSLog(@"无法获取文件属性!");
  39.         }
  40.         NSLog(@"文件大小为=%llu bytes",[[attr objectForKey:NSFileSize] unsignedLongLongValue]);           

  41. 删除文件
  42. if([filmgr removeItemAtPath:@"newFile2" error:NULL]==NO)
  43. {
  44.                NSLog(@"文件删除失败");
  45. }

  46. 二、实例:计算代码行数
  47. path : 文件的全路径(可能是文件夹、也可能是文件)
  48. NSUInteger codeLineCount(NSString *path)
  49. {
  50.     NSFileManager *mgr = [NSFileManager defaultManager];
  51.     // 是否为文件夹
  52. BOOL dir = NO; // 标记是否为文件夹
  53.     //路径是否存在
  54. BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];   
  55.     // 如果不存在,直接返回0
  56. if(!exist)
  57.     {
  58.         NSLog(@"文件路径不存在!!!!!!");
  59.         return 0;
  60.     }
  61.     if (dir)
  62.     { // 文件夹
  63.         // 获得当前文件夹path下面的所有内容(文件夹、文件)
  64.         NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
  65.         // 定义一个变量保存path中所有文件的总行数
  66.         int count = 0;
  67.         // 遍历数组中的所有子文件(夹)名
  68.         for (NSString *filename in array)
  69.         {
  70.             // 获得子文件(夹)的全路径
  71.             NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filename];
  72.             // 累加每个子路径的总行数
  73.             count += codeLineCount(fullPath);
  74.         }        
  75.         return count;
  76.         }
  77.         else
  78.         { // 文件
  79.         // 判断文件的拓展名(忽略大小写)
  80.         NSString *extension = [[path pathExtension] lowercaseString];
  81.         if (![extension isEqualToString:@"h"]
  82.             && ![extension isEqualToString:@"m"]
  83.             && ![extension isEqualToString:@"c"])
  84.        {
  85.             // 文件拓展名不是h,而且也不是m,而且也不是c
  86.             return 0;
  87.        }
  88.         // 加载文件内容
  89.         NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
  90.        // 将文件内容切割为每一行
  91.         NSArray *array = [content componentsSeparatedByString:@"\n"];
  92.        // 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/
  93.         NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/"];
  94.         NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];        
  95.         // 打印文件路径和行数
  96.         NSLog(@"%@ - %ld", str, array.count);
  97.         return array.count;
  98.     }
  99. }
  100. int main()
  101. {   
  102.     NSUInteger count = codeLineCount(@"/Users/Dfpo/Desktop/itheima);
  103.     NSLog(@"%ld", count);
  104.     return 0;
  105. }
复制代码


6608436517864647193.png (302.56 KB, 下载次数: 23)

6608436517864647193.png

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

7 个回复

倒序浏览
这个有点意思~
回复 使用道具 举报
这是fundation框架中最基本的知识了,还有,,,亲!!!请不要拿着老师的示例代码,乱发!!!这叫狐假虎威。。呵呵
回复 使用道具 举报
这个代码 看都看不懂:'(
回复 使用道具 举报
转帖需要说明来源
回复 使用道具 举报
学那么快啊
回复 使用道具 举报
学那么快啊  我都不敢看了
回复 使用道具 举报
天空总是很蓝 发表于 2014-11-22 01:07
学那么快啊  我都不敢看了

还差的很远 如果要过面试环节 至少基础要烂熟于心  不得不说 黑马对于0基础的来说难度真的挺大的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马