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,并希望得到一个包含单个路径的数组作为返回。
示例
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *fName = @"path.m";
NSFileManager *fm;
NSString *path, *tempdir, *extension, *homedir, *fullpath;
NSArray *components;
fm = [NSFileManager defaultManager];
// 获取临时的工作目录
tempdir = NSTemporaryDirectory();
NSLog(@"Temporary Directory is %@", tempdir);
// 从当前目录中提取基本目录
path = [fm currentDirectoryPath];
NSLog(@"Base dir is %@", [path lastPathComponent]);
// 创建文件fName在当前目录中的完整路径
fullpath = [path stringByAppendingPathComponent: fName];
NSLog(@"fullpath to %@ is %@", fName, fullpath);
// 获取文件扩展名
extension = [fullpath pathExtension];
NSLog(@"extension for %@ is %@", fullpath, extension);
// 获取用户的主目录
homedir = NSHomeDirectory();
NSLog(@"Your home directory is %@", homedir);
// 拆分路径为各组成部分
components = [homedir pathComponents];
for (path in components)
NSLog(@"%@", path);
// 每个应用程序都有自己的Documents和Caches目录供存储数据。
// NSSearchPathForDirectoriesInDomains用于查找系统的特殊目录,如
// Application和Documents目录。
// 第一个参数指查找路径,第二个参数可以是多个值,用于指定需要列出的目录,
// 如用户的(NSUserDomainMask)、系统的(NSSystemDomainMask)或者所有目录(NSAllDomainsMask)
// 最后一个参数用于指定是否展开路径中的~字符。
// 找到Users/{用户名}目录
NSArray *dirList = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
NSLog(@"dirList count=%lu", [dirList count]);
// 找到Users/{用户名}/Documents目录
NSString *docDir = dirList[0];
path = [docDir stringByAppendingPathComponent: @"saveFile"];
NSLog(@"doc file: %@", path);
// 查找Cache目录
dirList = NSSearchPathForDirectoriesInDomains(
NSCachesDirectory, NSUserDomainMask, YES);
NSLog(@"dirList count=%lu", [dirList count]);
NSString *cacheDir = dirList[0];
path = [cacheDir stringByAppendingPathComponent: @"saveFile"];
NSLog(@"cache file: %@", path);
}
return 0;
}
示例二:常用的路径工具函数
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *path;
// 返回当前用户的登录名
path = NSUserName();
NSLog(@"UserName: %@", path);
// 返回当前用户的完整用户名
path = NSFullUserName();
NSLog(@"FullUserName: %@", path);
// 返回当前用户主目录的路径
path = NSHomeDirectory();
NSLog(@"HomeDirectory: %@", path);
// 返回用户user的主目录的路径
path = NSHomeDirectoryForUser(@"YanShangGuang");
NSLog(@"HomeDirectoryForUser: %@", path);
// 返回可用于创建临时文件的路径目录
path = NSTemporaryDirectory();
NSLog(@"TemporaryDirectory: %@", path);
}
return 0;
}