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