ios 路径操作 http://www.tongwenguan.com/objective-c/objective-c-%E5%85%AD%E5%8D%81%E5%85%AB%E3%80%81%E5%9F%BA%E7%A1%80%E6%A1%86%E6%9E%B6%EF%BC%88%E4%BA%8

下面表格中的措施 可以用来操作 路径:

措施名称描述
+(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/

2012-05-1513:18:05.919Sample[3418:707]基本目录为:Debug

2012-05-1513:18:05.920Sample[3418:707]完整路径为:/Users/Zijin/Library/Developer/Xcode/DerivedData/Sample-bwtvtehgdvdkzgaqfkwvluuhrhso/Build/Products/Debug/main.m

2012-05-1513:18:05.920Sample[3418:707]扩展名为:m

2012-05-1513:18:05.921Sample[3418:707]用户主目录为:/Users/Zijin

2012-05-1513:18:05.922Sample[3418:707]/

2012-05-1513:18:05.923Sample[3418:707]Users

2012-05-1513:18:05.924Sample[3418:707]Zijin

2012-05-1513:18:05.925Sample[3418:707]~/Desktop/Sample/Sample/main.m=>/Users/Zijin/Desktop/Sample/Sample/main.m

Program ended with exit code:0

在这个程序当中 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这项措施,将 其 转换成 完整的路径名称。