C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 是否可以在iOS中对一个目录进行全局操作并将结果缓存在操作系统中?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在iOS上使用NSFileManager和低级API从文件系统读取的许多方法都涉及内置缓存,因此即使目录中有大量项目,从未更改的目录中读取也会非常快.

我有一种情况,我希望能够使用glob枚举目录中的文件

即该文件夹具有如下命名的文件

1-1-0.png
1-2-0.png
1-3-0.png
1-3-1.png
2-2-1.png
5-1-1.png
5-1-2.png
5-2-1.png
5-3-0.png
6-1-1.png
...
1501-5-2.png

我可能想让所有文件名匹配5 – * – 1.png,这会让我回到5-1-1.png和5-2-1.png.

加载整个目录列表然后在RAM中进行通配是非常简单的,但有没有一种方法可以在内置缓存的操作系统级别执行此操作,因此重复调用相同的glob会产生缓存(更快)的结果?

解决方法

您可以使用本主题中概述的glob()函数https://gist.github.com/bkyle/293959

#include <glob.h> 

+ (NSArray*) arrayWithFilesmatchingPattern: (NSString*) pattern inDirectory: (NSString*) directory { 
  NSMutableArray* files = [NSMutableArray array];
  glob_t gt;
  NSString* globPathComponent = [NSString StringWithFormat: @"/%@",pattern];
  NSString* expandedDirectory = [directory StringByExpandingTildeInPath];
  const char* fullPattern = [[expandedDirectory StringByAppendingPathComponent: globPathComponent] UTF8String];
  if (glob(fullPattern,NULL,&gt) == 0) {
      int i;
      for (i=0; i<gt.gl_matchc; i++) {
          size_t len = strlen(gt.gl_pathv[i]);
          NSString* filename = [[NSFileManager defaultManager] StringWithFileSystemRepresentation: gt.gl_pathv[i] length: len];
          [files addObject: filename];
      }
  }
  globfree(&gt);
  return [NSArray arrayWithArray: files];
}

大佬总结

以上是大佬教程为你收集整理的objective-c – 是否可以在iOS中对一个目录进行全局操作并将结果缓存在操作系统中?全部内容,希望文章能够帮你解决objective-c – 是否可以在iOS中对一个目录进行全局操作并将结果缓存在操作系统中?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。