下面表格中的措施 可以用来操作 路径:
措施名称 | 描述 |
+(NSString *)pathWithComponents:components | 用components创建有效的路径名称 |
-(NSArray *)pathComponents | 将路径名称拆分成若干组成部分 |
-(NSString *)lastPathComponent | 获取路径名称中最后一个组成部分 |
-(NSString *)pathExtension | 获取路径名称中的扩展名(后缀名) |
-(NSString *)stringByAppendingPathComponent:path | 将path添加到已有的路径名称末尾 |
-(NSString *)stringByAppendingPathExtension:ext | 将扩展名ext添加到已有的路径名称的最后一个组成部分的末尾 |
-(NSString *)stringByDeletingLastPathComponent | 将已有的路径名称的最后一个组成部分删除 |
-(NSString *)stringByDeletingPathExtension | 删除已有路径名称的扩展名 |
-(NSString *)stringByExpandingTildeInPath | 将路径名称中的~字符展开 |
-(NSString *)stringByResolvingSymlinksInPath | 解析路径名称中的符号链接 |
-(NSString *)stringByStandardizingPath | 将路径名称标准化 |
下面表格中的函数 可以用来获取 用户名、用户的主目录路径 还有 临时目录路径:
函数名称 | 描述 |
NSString *NSUserName(void) | 获取当前用户的登录名 |
NSString *NSFullUserName(void) | 获取当前用户的全名 |
NSString *NSHomeDirectory(void) | 获取当前用户的主目录路径 |
NSString *NSHomeDirectoryForUser(NSString *user) | 获取用户user的主目录路径 |
NSString *NSTemporaryDirectory(void) | 获取临时目录的路径 |
NSPathUtilities.h这个头文件 包含了 一些函数 和 类别。这些函数 和 类别 是 对NSString这类物件的扩展。你 可以用 这些函数 和 类别 来控制 路径名称。任何时候 只要可能 你 都应该使用 这些函数 和 类别,因为 这样做 可以使 你的程序 更少地 依赖 特定的文件系统结构 和 某些特定文件、目录的位置。下面的程序 示范了 如何使用 NSPathUtilities.h这个文件所提供的函数 和 措施:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#import <Foundation/NSArray.h>
#import <Foundation/NSString.h>
#import <Foundation/NSFileManager.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSPathUtilities.h>
intmain(intargc,const char*argv[])
{
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];
NSString*fileName=@"main.m";
NSFileManager*myFileManager;
NSString*path,*temporaryDirectory,*extension,*homeDirectory,*fullPath;
NSString*uPath=@"~/Desktop/Sample/Sample/main.m";
NSArray*components;
myFileManager=[NSFileManager defaultManager];
//获取并且显示临时目录
temporaryDirectory=NSTemporaryDirectory();
NSLog(@"临时目录为:%@",temporaryDirectory);
//从当前目录路径中获取基本目录
path=[myFileManager currentDirectoryPath];
NSLog(@"基本目录为:%@",[path lastPathComponent]);
//获取文件main.m的完整路径
fullPath=[pathstringByAppendingPathComponent:fileName];
NSLog(@"完整路径为:%@",fullPath);
//获取完整路径fullPath中的扩展名
extension=[fullPath pathExtension];
NSLog(@"扩展名为:%@",extension);
//获取用户的主目录
homeDirectory=NSHomeDirectory();
NSLog(@"用户主目录为:%@",homeDirectory);
//将用户的主目录路径拆分,并且分别显示出来
components=[homeDirectory pathComponents];
for(NSString*pathComponentin components)
{
NSLog(@"%@",pathComponent);
}
//将简略路径转换成标准路径
NSLog(@"%@=>%@",uPath,[uPath stringByStandardizingPath]);
[pool drain];
return0;
}
|
2012-05-1513:18:05.917Sample[3418:707]临时目录为:/var/folders/l9/6375t2dn7wxftl7_rvxnh08r0000gn/T/
在这个程序当中 NSTemporaryDirectory()这个函数所产生的结果 是 临时目录的路径。在临时目录当中 你 可以创建 临时文件。如果 你 在临时目录当中 创建 文件,那么 你 必须保证 最后 将 临时文件 清理出去。同时 你 必须确保 你创建的文件之名称 是 独一无二的。
lastPathComponent这项措施 会将 其实施对象所代表的路径中 最后一个组成部分 读取出来。如果 其实施对象 为 路径“/Users/Zijin/Library/Developer/Xcode/DerivedData/Sample-bwtvtehgdvdkzgaqfkwvluuhrhso/Build/Products/Debug”,那么 最后产生的结果 就是 这个路径的最后一个组成部分,也就是 Debug。
stringByAppendingPathComponent:这项措施的实施对象 为 路径名称,而 其参数 则是 文件名称。这项措施的作用 是 将 文件名称 添加 到路径名称的结尾处。如果 这项措施的实施对象所代表的路径名称 不是 用斜杠结尾的,那么 这项措施 会 自动 在其实施对象所代表的路径名称之结尾处 加上 一个斜杠。利用 currentDirectory 和 stringByAppendingPathComponent:这两项措施 就可以得到 当前目录中任意一个文件的完整路径。
pathExtension这项措施 用来读取 其实施对象所代表的文件之扩展名。在这个程序中 pathExtension这项措施的实施对象 是 fullPath,fullPath代表的是 “/Users/Zijin/Library/Developer/Xcode/DerivedData/Sample-bwtvtehgdvdkzgaqfkwvluuhrhso/Build/Products/Debug/main.m”,那么 这项措施所产生的结果 就是 m。如果 这项措施的实施对象 没有 扩展名,那么 这项措施所产生的结果 就是 空字符串。
NSHomeDirectory()这个函数所产生的结果 为 当前用户的主目录。你 可以用 这个函数 来获取 任何一个特定用户的主目录,只要 在参数中 填上 那个用户的名称 就可以了。
pathComponents这项措施所产生的结果 为 NSArray类型的数组物件。这个数组物件 包含着 其实施对象所代表的路径之构成部分。在这个程序当中 pathComponents这项措施的实施对象 为 homeDirectory,也就是 当前用户的主目录路径。接着 用 快速枚举 将 当前用户主目录路径的构成部分 从components这个数组物件当中 依次 读取 并且 显示出来。
最后 uPath这个物件所代表的路径名称中 包含了 ~字符。在之前 我们 说过 适用于NSFileManager这类物件的措施 会接受 ~这个字符 来代替 当前用户的主目录 或者 用 ~用户名 来代表 某个特定用户的主目录。如果 某个路径名称 包含 ~这个字符,那么 可以对 这个路径名称 采取 stringByStandardizingPath这项措施,将 其 转换成 完整的路径名称。