NSPathUtilities.h

作者:追风剑情 发布于:2019-3-5 13:48 分类:Objective-C

NSPathUtilities.h包含了NSString的函数和分类扩展,它允许你操作路径名。应该尽可能地使用这些函数,以便使程序更独立于文件系统结构及特定文件和目录的位置。

NSString中常用的路径工具方法
方法 描述
+(NSString *) pathWithComponents: components 根据components中的元素构造有效路径
-(NSArray *) pathComponents 析构路径,获得组成此路径的各个部分
-(NSString *) lastPathComponents 提取路径的最后一个组成部分
-(NSString *) pathExtension 从路径的最后一个组成部分中提取其扩展
-(NSString *) stringByAppendingPathComponent: path 将path添加到现有路径的末尾
-(NSString *) stringByAppendingPathExtension: ext 将指定的扩展名添加到路径的最后一个组成部分
-(NSString *) stringByDeletingLastPathComponent 删除路径的最后一个组成部分
-(NSString *) stringByDeletingPathExtension 从文件的最后一部分删除扩展名
-(NSString *) stringByExpandingTildeInPath 将路径中的代字符扩展成用户主目录(~)或指定用户的主目录(~user)
-(NSString *) stringByResolvingSymlinksInPath 尝试解析路径中的符号链接
-(NSString *) stringByStandardizingPath 通过尝试解析~、..(父目录符号)、.(当前目录符号)和符号链接来标准化路径

常用的路径工具函数
函数 描述
NSString *NSUserName(void) 返回当前用户的登录名
NSString *NSFullUserName(void) 返回当前用户的完整用户名
NSString *NSHomeDirectory(void) 返回当前用户主目录的路径
NSString *NSHomeDirectoryForUser(NSString *user) 返回用户user的主目录
NSString *NSTemporaryDirectory(void) 返回可用于创建临时文件的路径目录

注意:当为iOS编写程序时,NSSearchPathForDirectoriesInDomains函数的第二个参数应是NSUserDomainMask,并希望得到一个包含单个路径的数组作为返回。

示例

  1. #import <Foundation/Foundation.h>
  2.  
  3. int main(int argc, const char * argv[]) {
  4. @autoreleasepool {
  5. NSString *fName = @"path.m";
  6. NSFileManager *fm;
  7. NSString *path, *tempdir, *extension, *homedir, *fullpath;
  8. NSArray *components;
  9. fm = [NSFileManager defaultManager];
  10. // 获取临时的工作目录
  11. tempdir = NSTemporaryDirectory();
  12. NSLog(@"Temporary Directory is %@", tempdir);
  13. // 从当前目录中提取基本目录
  14. path = [fm currentDirectoryPath];
  15. NSLog(@"Base dir is %@", [path lastPathComponent]);
  16. // 创建文件fName在当前目录中的完整路径
  17. fullpath = [path stringByAppendingPathComponent: fName];
  18. NSLog(@"fullpath to %@ is %@", fName, fullpath);
  19. // 获取文件扩展名
  20. extension = [fullpath pathExtension];
  21. NSLog(@"extension for %@ is %@", fullpath, extension);
  22. // 获取用户的主目录
  23. homedir = NSHomeDirectory();
  24. NSLog(@"Your home directory is %@", homedir);
  25. // 拆分路径为各组成部分
  26. components = [homedir pathComponents];
  27. for (path in components)
  28. NSLog(@"%@", path);
  29. // 每个应用程序都有自己的Documents和Caches目录供存储数据。
  30. // NSSearchPathForDirectoriesInDomains用于查找系统的特殊目录,如
  31. // Application和Documents目录。
  32. // 第一个参数指查找路径,第二个参数可以是多个值,用于指定需要列出的目录,
  33. // 如用户的(NSUserDomainMask)、系统的(NSSystemDomainMask)或者所有目录(NSAllDomainsMask)
  34. // 最后一个参数用于指定是否展开路径中的~字符。
  35. // 找到Users/{用户名}目录
  36. NSArray *dirList = NSSearchPathForDirectoriesInDomains(
  37. NSDocumentDirectory, NSUserDomainMask, YES);
  38. NSLog(@"dirList count=%lu", [dirList count]);
  39. // 找到Users/{用户名}/Documents目录
  40. NSString *docDir = dirList[0];
  41. path = [docDir stringByAppendingPathComponent: @"saveFile"];
  42. NSLog(@"doc file: %@", path);
  43. // 查找Cache目录
  44. dirList = NSSearchPathForDirectoriesInDomains(
  45. NSCachesDirectory, NSUserDomainMask, YES);
  46. NSLog(@"dirList count=%lu", [dirList count]);
  47. NSString *cacheDir = dirList[0];
  48. path = [cacheDir stringByAppendingPathComponent: @"saveFile"];
  49. NSLog(@"cache file: %@", path);
  50. }
  51. return 0;
  52. }

运行测试
111.png

示例二:常用的路径工具函数

  1. #import <Foundation/Foundation.h>
  2.  
  3. int main(int argc, const char * argv[]) {
  4. @autoreleasepool {
  5. NSString *path;
  6. // 返回当前用户的登录名
  7. path = NSUserName();
  8. NSLog(@"UserName: %@", path);
  9. // 返回当前用户的完整用户名
  10. path = NSFullUserName();
  11. NSLog(@"FullUserName: %@", path);
  12. // 返回当前用户主目录的路径
  13. path = NSHomeDirectory();
  14. NSLog(@"HomeDirectory: %@", path);
  15. // 返回用户user的主目录的路径
  16. path = NSHomeDirectoryForUser(@"YanShangGuang");
  17. NSLog(@"HomeDirectoryForUser: %@", path);
  18. // 返回可用于创建临时文件的路径目录
  19. path = NSTemporaryDirectory();
  20. NSLog(@"TemporaryDirectory: %@", path);
  21. }
  22. return 0;
  23. }

运行测试
111.png


标签: Objective-C

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号