oc 对系统NSPathUtilities.h的简单研究
2019-07-20 本文已影响0人
雨天多久就
文件里首先是对NSString创建了一个分类NSString + NSStringPathExtensions.h
这个分类的主要作用是对路径字符串的各种处理.
- 生成路径字符串的方法
+ (NSString *)pathWithComponents:(NSArray<NSString *> *)components;
根据传过来的字符串数组生成一个文件路径(各个字符串之间拼接"/"
)
其实相当于[components componentsJoinedByString:@"/"]
需要注意的是,如果要生成一个绝对路径,数组里第一个元素应该是:@"/"
比如:NSString * testPath= [NSString pathWithComponents:@[@"/",@"mushao",@"doc",@"info.plist"]];
这样生成的testPath为: /mushao/doc/info.plist
- 路径后面拼接信息的方法
- (NSString *)stringByAppendingPathComponent:(NSString *)str;
/*这个方法是在路径后面添加一个路径组成部分(就相当于上面方法的数组里多加一个字符串)*/
- (nullable NSString *)stringByAppendingPathExtension:(NSString *)str;
/*添加路径的扩展信息(比如之前是/mushao/info)
用这个方法传参@"plist",就变成 /mushao/info.plist*/
- (NSArray<NSString *> *)stringsByAppendingPaths:(NSArray<NSString *> *)paths;
/*传一个路径字符串数组过来,生成一个路径数组并返回。比如 [@"mushao/doc/info" stringsByAppendingPaths:@[@"1",@"2"]]
生成的结果是: @[ @"mushao/doc/info/1",@ "mushao/doc/info/2"]*/
后面主要是一些只读属性,以路径为例:/mushao/doc/info.plist
// 路径最后一部分 info.plist
@property (readonly, copy) NSString *lastPathComponent;
// 删除路径最后一部分后的字符串 /mushao/doc
@property (readonly, copy) NSString *stringByDeletingLastPathComponent;
// 文件路径扩展名 plist
@property (readonly, copy) NSString *pathExtension;
// 删除路径扩展 /mushao/doc/info
@property (readonly, copy) NSString *stringByDeletingPathExtension;
// 使用波浪号简写 ~/mushao/doc/info 波浪号代表的是用户根目录
@property (readonly, copy) NSString *stringByAbbreviatingWithTildeInPath;
// 展开波浪号 即显示完整的路径
@property (readonly, copy) NSString *stringByExpandingTildeInPath;
// 尝试把含有波浪号,父目录符合,当前目录符合等特殊符合解析成真正完整的路径 (如果失败,就返回自身字符串)
@property (readonly, copy) NSString *stringByStandardizingPath;
// 解析路径中的符合链接,生成完整的路径 (如果失败,就返回自身字符串)
@property (readonly, copy) NSString *stringByResolvingSymlinksInPath;
// 返回当前登录的用户名 (没太理解,模拟器上没有任何输出,真机上没测试)
FOUNDATION_EXPORT NSString *NSUserName(void);
// 返回当前登录的完整用户名
FOUNDATION_EXPORT NSString *NSFullUserName(void);
// 应用程序的沙盒主目录
FOUNDATION_EXPORT NSString *NSHomeDirectory(void);
FOUNDATION_EXPORT NSString * _Nullable NSHomeDirectoryForUser(NSString * _Nullable userName);
// 应用程序的临时文件目录
FOUNDATION_EXPORT NSString *NSTemporaryDirectory(void);
// 不太明白
FOUNDATION_EXPORT NSString *NSOpenStepRootDirectory(void);
未完待续……