绝对路径
绝对路径是指文件在(文件系统)电脑硬盘或者手机存储上真正存在的路径。
以iPhone文件系统为例,例如模拟器中“pic.png”这个图片是存放在app的沙盒Documents
“/Users /Jakey/Library/Developer/CoreSimulator/Devices/825FCFAB-B70D-4392-B5AA- 351F391242AF/data/Containers/Data/Application/C5011D63-F123-4A2D- AD19-131B6513EA43/Documents/pic.png”目录下,
那么 “pic.png”这个app的绝对路径就是“/Users/Jakey/Library/Developer/CoreSimulator /Devices/825FCFAB-B70D-4392-B5AA-351F391242AF/data/Containers/Data/Application/C5011D63-F123-4A2D-AD19-131B6513EA43/Documents/pic.png"
那么如果要使用绝对路径指定使用图片就是 以下语句:
1 |
UIImage *image = [UIImage imageWithContentsOfFile:@"/Users/Jakey/Library/Developer/CoreSimulator/Devices/825FCFAB-B70D-4392-B5AA-351F391242AF/data/Containers/Data/Application/C5011D63-F123-4A2D-AD19-131B6513EA43/Documents/pic.png"]; |
2.使用绝对路径的缺点
事实上,在app开发时,很少会使用绝对路径,如果使用“/Users/Jakey/Library/Developer/CoreSimulator /Devices/825FCFAB-B70D-4392-B5AA-351F391242AF/data/Containers/Data /Application/C5011D63-F123-4A2D-AD19-131B6513EA43/Documents/pic.png”来指定图 片的位置,但是我们知道每次启动app可能 Documents 路径就变了, 很有可能不会显示图片了。
相对路径
为了 避免这种情况发生,通常在app里指定文件时,都会选择使用相对路径。所谓相对路径,就是相对于自己的目标文件位置。例如上面的例子,程序里引用了 “pic.png”图片,由于“pic.png”图片相对于“沙盒Documents”来说,是在Documents的根目录下的,那么要在代码里使用以 下代 码后,只要这两个文件的相对位置没有变(也就是说还是在Documents根目录内),那么无论Documents之前的url如何改变,我们都能访问到 “pic.png”
存储的时候我们只需要存储pic.png,使用的时候用Documents拼上pic.png即可
1 2 3 |
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; NSString *picPath = [documents stringByAppendingPathComponent:@"pic.png"]; UIImage *image = [UIImage imageWithContentsOfFile:picPath]; |
FAQ
如果之前存的绝对路径怎么办?
很简答,substring 或着repalcestring到Documents即可,这些就是NSString 的API使用了,这里不做讲解
转载请注明:天狐博客 » iOS开发之绝对路径与相对路径详解