sandbox沙盒介绍以及如何取得沙盒里面各文件的路径,图片导入方式和图片路径获取

转:http://blog.csdn.net/weisubao/article/details/39501035?utm_source=tuicool&utm_medium=referral


其实每个APP的程序都是单独的一个文件夹,每个APP之间相互之间独立,所以它们的文件夹也是独立的,这个文件夹就是沙盒。沙盒好处,安全。坏处,程序之间彼此共享数据较为困难。

(1)如何找到应用程序的沙盒源文件?

一般沙盒源文件都存放在~/Library/Application Support/iPhone Simulator/版本号/Applications/的文件夹中,但是这个Library(中文名叫资源库)文件夹是隐藏的。所以需要方法才能点击进去:在Finder中按CMD+SHIFT+G,然后再前往的框中输入~/Library,也就是直接前往,而不是通过点击前往。

当然也是可以用终端一直cd进去,注意有的目录名有两个单词中间空格前面要加 \ 转义,如cd ./Library/Application\ Support/iPhone\ Simulator/

后面选择模拟的版本,然后进入Application,里面都是应用程序,当然是用哈希码命名,里面有4个文件:

Documents、Library、tmp和hello.app,存放永久和临时数据的,这就是每个沙盒里面的主要文件。


(2)如何用代码获得沙盒里面的文件路径?

注明:NSBundle就是获取.app文件里面资源的一种方式。

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  2.     //获取整个程序所在目录  
  3.     NSString *homePath=NSHomeDirectory();  
  4.     NSLog(@"%@",homePath);  
  5.     //获取.app文件目录  
  6.     NSString *appPath=[[NSBundle mainBundle]bundlePath];  
  7.     NSLog(@"%@",appPath);  
  8.     //Documents目录  
  9.     NSArray *arr1=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  10.     NSLog(@"%@",[arr1 objectAtIndex:0]);  
  11.     //Library目录  
  12.     NSArray *arr2=NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);  
  13.     NSLog(@"%@",[arr2 objectAtIndex:0]);  
  14.     //Caches目录,在Library下面  
  15.     NSArray *arr3=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);  
  16.     NSLog(@"%@",[arr3 objectAtIndex:0]);  
  17.     //tmp目录  
  18.     NSString *tmpPath=NSTemporaryDirectory();  
  19.     NSLog(@"%@",tmpPath);  
  20.     //用整个程序目录加上tmp就拼凑出tmp目录,其他目录都可这样完成  
  21.     NSString *tmpPath_1=[homePath stringByAppendingPathComponent:@"tmp"];  
  22.     NSLog(@"%@",tmpPath_1);  
  23.     // Override point for customization after application launch.  
  24.     return YES;  
  25. }  
结果:

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 2014-09-23 21:05:58.966 hello[7763:546804] /Users/Andy/Library/Developer/CoreSimulator/Devices/64EDA842-5B0C-448D-BF2B-B063D09B60CB/data/Containers/Data/Application/08972B0F-5ECF-42B2-934B-892E8E3F7F6D  
  2. 2014-09-23 21:05:58.966 hello[7763:546804] /Users/Andy/Library/Developer/CoreSimulator/Devices/64EDA842-5B0C-448D-BF2B-B063D09B60CB/data/Containers/Bundle/Application/E7D6885C-9CC1-461D-867C-8D0DA5AF183A/hello.app  
  3. 2014-09-23 21:05:58.967 hello[7763:546804] /Users/Andy/Library/Developer/CoreSimulator/Devices/64EDA842-5B0C-448D-BF2B-B063D09B60CB/data/Containers/Data/Application/08972B0F-5ECF-42B2-934B-892E8E3F7F6D/Documents  
  4. 2014-09-23 21:05:58.967 hello[7763:546804] /Users/Andy/Library/Developer/CoreSimulator/Devices/64EDA842-5B0C-448D-BF2B-B063D09B60CB/data/Containers/Data/Application/08972B0F-5ECF-42B2-934B-892E8E3F7F6D/Library  
  5. 2014-09-23 21:05:58.967 hello[7763:546804] /Users/Andy/Library/Developer/CoreSimulator/Devices/64EDA842-5B0C-448D-BF2B-B063D09B60CB/data/Containers/Data/Application/08972B0F-5ECF-42B2-934B-892E8E3F7F6D/Library/Caches  
  6. 2014-09-23 21:05:58.967 hello[7763:546804] /Users/Andy/Library/Developer/CoreSimulator/Devices/64EDA842-5B0C-448D-BF2B-B063D09B60CB/data/Containers/Data/Application/08972B0F-5ECF-42B2-934B-892E8E3F7F6D/tmp/  
  7. 2014-09-23 21:05:58.967 hello[7763:546804] /Users/Andy/Library/Developer/CoreSimulator/Devices/64EDA842-5B0C-448D-BF2B-B063D09B60CB/data/Containers/Data/Application/08972B0F-5ECF-42B2-934B-892E8E3F7F6D/tmp  

(3)导入图片的方式以及如何获取路径

我们往程序中导入一个img文件夹或者一张图片时有两种方式:Creat groups和Creat folder reference,前者表示导入进来的图片都在.app(它其实是哥文件夹)中,列示在左侧的img文件夹只是用来分组而不是真正的目录;而后者表示不仅把图片导入进来,还把img目录导入进来,即.app下有个img文件夹,里面存放的时图片。



我们看到如下获取图片路径都用到NSBundle,其实因为都是在.app文件夹中,而NSBundle就是获取.app里资源的,所以在强化记忆一遍。

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  2.     //Create groups方式,图片直接在.app里,以下两种方式相同  
  3.     NSString *path1=[[NSBundle mainBundle]pathForResource:@"1" ofType:@"png"];  
  4.     NSString *path2=[[NSBundle mainBundle]pathForResource:@"1.png" ofType:nil];  
  5.     NSLog(@"%@,%@",path1,path2);  
  6.       
  7.     //Create folder reference方式,图片在img里,以下三种方式相同  
  8.     NSString *path3=[[NSBundle mainBundle]pathForResource:@"1" ofType:@"png" inDirectory:@"img"];  
  9.     NSString *path4=[[NSBundle mainBundle]pathForResource:@"1.png" ofType:nil inDirectory:@"img"];  
  10.     NSString *path5=[[NSBundle mainBundle]pathForResource:@"img/1.png" ofType:nil inDirectory:nil];  
  11.     NSLog(@"%@,%@,%@",path3,path4,path5);  
  12.     // Override point for customization after application launch.  
  13.     return YES;  
  14. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值