iOS APP可以在自己的沙盒里读写文件,每一个APP有自己独立的沙盒。沙盒里面的文件可以是照片、声音文件、文本、属性列表等。
沙盒机制简介
-
沙盒根目录结构:Documents、Library、temp。
-
简述一下Documents、Library、tmp的区别:
-
Documents:用于存储用户数据,iTunes备份和恢复的时候会包括此目录,所以,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下。
-
Library:包含两个子目录:Caches 和 Preferences。Caches用来存放用户需要缓存的文件。Preferences是APP的偏好设置,可以通过NSUserDefaults来读取和设置。
-
tmp:用于存放临时文件,这个可以放一些当APP退出后不再需要的文件。
</br>
程序中获取沙盒根目录
// 获取沙盒根目录
NSString *basePath = NSHomeDirectory();
NSLog(@"basePath = %@",basePath);
// 输出(模拟器地址):basePath = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440
获取Documents路径
// 获取Documents路径
NSArray *documentsPathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPathStr = [documentsPathArr objectAtIndex:0];
NSLog(@"documentsPathStr = %@",documentsPathStr);
// 输出(模拟器地址):documentsPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/Documents
获取Library路径
// 获取Library路径
NSArray *libraryPathArr = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryPathStr = [libraryPathArr objectAtIndex:0];
NSLog(@"libraryPathStr = %@",libraryPathStr);
// 输出(模拟器地址):libraryPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/Library
获取Caches路径
// 获取Caches路径
NSArray *CachesPathArr = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *CachesPathStr = [CachesPathArr objectAtIndex:0];
NSLog(@"CachesPathStr = %@",CachesPathStr);
// 输出(模拟器地址):CachesPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/Library/Caches
获取tmp路径
// 获取tmp路径
NSString *tmpPathStr = NSTemporaryDirectory();
NSLog(@"tmpPathStr = %@",tmpPathStr);
// 输出(模拟器地址):tmpPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/tmp/
使用真机查看APP沙盒
1. 打开Devices
在xcode的上部导航栏里,选择window -> Devices
devices.png2. 找到在真机上调试的APP
Paste_Image.png双击应用或者点击下面的设置按钮
沙盒目录结构.png这样我们只能看到沙盒的目录结构,但是看不到实体文件。
3. 下载沙盒文件到本地
如果想要查看真机沙盒文件的内容,需要点击Download Container,把文件下载本地进行查看。
Download_Container.png 沙盒本地文件.png右击选择“显示包内容”,查看文件内容。
网友评论