相对、绝对路径有必要打个比方:
好比你对同一楼的邻居美女说:我住202,晚上来我家吃饭。她可以找到;而你对大街上邂逅的陌生美女说这句话,
她如果想约的话就会问你:哪个区哪个单元的202啊?
see ?
那么,[UIImage imageNamed:@"haha.png"] ,就是相对路径,程序内部做了处理。相当于你的美女邻居。
而,[videoData writeToFile:fullPath atomically:NO]; 这个fullPath需要绝对路径,
相当于大街上那位美女
那么问题来了,如何知道fullPath呢?
[[NSBundle mainBundle] pathForResource:@"spark" ofType:@"mp3"]; 这个能返回绝对路径。
或者
NSString *str = [[NSBundle mainBundle] resourcePath];
NSString *mp3Path = [NSString stringWithFormat:@"%@/spark.mp3",str,]
目录结构:
------AppName.app
------Documents
------Library
----------Caches
----------Preferences
------tmp
------
Documents: 用于存储用户数据或其它应该定期备份的信息
Preferences : 应用程序的偏好设置文件
Caches : 保存应用程序再次启动过程中需要的信息。您的应用程序通常需要负责添加和删除这些文件,
但在对设备进行完全恢复的过程中,iTunes会删除这些文件
tmp : 存放临时文件,保存应用程序再次启动过程中不需要的信息
没有什么比上官方图片更给力的了:
(每个程序都有自己的 Sandbox 沙盒,并且不能直接访问)
获取各个 路径
-----------Documents :
NSString* documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSLog(@"documentsDirectory----%@\n\n",documentsDirectory);
或者
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory1 = [paths objectAtIndex:0];
----------Library
NSString* LibraryDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Library"];
或者
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES);
NSString *LibraryDirectory1 = [paths objectAtIndex:0];
-----------Cache
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory1 = [paths objectAtIndex:0];
----------test.app
NSString *str = [[NSBundle mainBundle] resourcePath];
NSLog(@"str---%@\n\n",str);
///你所导入的文件就放在这里,文章开头已经说了如何获取其路径
----------获取 根目录
NSHomeDirectory();