NSBundle路径问题

简介: 先上图 上面是一个程序文件的主要路径图,我们平时获取默认路径或者保存文件路径的两种方式:NSString * bundlepath = [[NSBundle mainBundle]resourcePath]结果: /Users/tyrantxz/Library/Developer/CoreSimulator/Devices/A010629C-B166-42

先上图
NSBundle路径

上面是一个程序文件的主要路径图,我们平时获取默认路径或者保存文件路径的两种方式:

NSString * bundlepath = [[NSBundle mainBundle]resourcePath]

结果:
/Users/tyrantxz/Library/Developer/CoreSimulator/Devices/A010629C-B166-426B-B8CA-82EF57777F6D/data/Containers/Bundle/Application/E88A5515-5BA3-4CB7-84CC-F5D139E6EA3E/testview.app/

NSString* documentpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];

结果:
/Users/tyrantxz/Library/Developer/CoreSimulator/Devices/A010629C-B166-426B-B8CA-82EF57777F6D/data/Containers/Data/Application/AF9FA867-7210-4FAB-945F-B9619B068B15/Documents

这两者什么区别呢?

从路径上看,一个在Bundle目录下,一个在Data目录下,从上图看,Bundle目录最后是当前的执行程序,程序其实是就是个“bunlde”,可以以文件方式打开程序,里面存放的是除了代码外的资源文件,包括plist,storyboard等,也就是说,以资源为主。

另一个Data目录,最后目录如下:
这里写图片描述

可以看到,这就是所谓的”沙箱”目录,即只允许自己的程序访问,别的程序不允许访问,主要是用来存储数据和备份的。

这就是两个路径的区别,个人理解,bundle下的资源是即时访问的,data下的数据是可以间断调用的,正是因为这种区别,所以我们一般会将bundle下的数据文件copy到data/documents/下,方便对其进行读写,网上说是因为bundle中文件只能读不能写,这点笔者专门test了一下,证明是可以写的。

相关文章
|
3月前
|
机器人
04_不同路径
04_不同路径
|
6月前
|
C++
C++ 获取当前程序路径
C++ 获取当前程序路径
|
7月前
|
C++
[C++] 获取工程路径、解决方案路径和.exe路径
[C++] 获取工程路径、解决方案路径和.exe路径
186 1
|
前端开发 JavaScript
路径相对、绝对
如果有人抄袭你的网站内容,里面的链接还会指向你的网站,有些抄袭的人比较懒,根本不会去改内容。 其实也不局限于被抄袭,如果有人将你的网页保存到本地电脑中,里面的链接、图片、css、以及js仍然会连接到你的网站。
|
机器人
不同路径
不同路径
69 0
C# 获取本机系统特殊文件夹路径
C# 获取本机系统特殊文件夹路径
C# 获取本机系统特殊文件夹路径
|
开发者 Python Windows
路径的介绍 | 学习笔记
快速学习 路径的介绍
130 0
路径的介绍 | 学习笔记
|
机器人
Day39——62.不同路径 63. 不同路径 II
Day39——62.不同路径 63. 不同路径 II
88 0
62. 不同路径
62. 不同路径
61 0
62. 不同路径