iOS 获取沙盒及其它路径的总结

一、沙盒机制

ios应用程序只能在为该应用程序创建的文件系统中读取或写入文件,不可以去其它地方访问,此区域称为沙盒。所有的非代码文件都要保存于此(eg:文本文件,声音,图标等)。

二、沙盒目录结构

iOS 获取沙盒及其它路径的总结_第1张图片

A、Data文件夹下

/Users/Nina/Library/Developer/CoreSimulator/Devices/1E4B0A2F-AA88-4F61-901C-2DD1939B7FD9/data/Containers/Data/Application/298DC6CF-C19A-4663-B16D-8B6C1C5A383F/Documents/ceshi.sqlite

B、Bundle文件夹下

//应用程序包。应用程序的源文件,包括资源文件和可执行文件 /Users/Nina/Library/Developer/CoreSimulator/Devices/1E4B0A2F-AA88-4F61-901C-2DD1939B7FD9/data/Containers/Bundle/Application/1F738D13-FD4E-446F-B47E-3BCBD9F8E657/SandBoxPath.app

NSString *appPath = [[NSBundle mainBundle] bundlePath];

iOS 获取沙盒及其它路径的总结_第2张图片

沙盒中默认包含有三个文件夹(Documents,Library,tmp)

1、Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下;iTunes 会同步此文件夹中的内容。

2、Library:存储程序的默认设置和其他状态信息。iTunes会备份此目录,但不包含其子目录caches.

(1)library/Caches:存放缓存文件;iTunes不会备份此目录;在应用退出时,该目录下的文件将被删除;保存应用程序再次启动过程中需要的信息。

(2)library/Preferences:存放偏好设置的文件(不应该直接创建偏好设置的文件,而是应该使用NSUserDefaults来取得或设置文件);iTunes 会同步此文件夹中的内容。

总结:一般可将文件存放在Documents或Library/Caches目录下,

两者的区别:Documents可以被iTunes同步备份,但Library/Caches不可以被iTunes同步备份。同步iTunes 是需要花费时间的,所以为了减少同步的时间,可以考虑将一些比体积较大的文件而又不需要备份的文件放到Library/caches下将重要的数据存放到Documents下

3、tmp:提供一个创建临时文件的的地方。在应用退出时,该目录下的文件将被删除;也可能在应用不运行时被删除。保存应用程序再次启动过程中不需要的信息。

三、获取沙盒目录方法

//1、获取沙盒主目录

//firstWay

NSString *homePath1= NSHomeDirectory();

NSLog(@"homePath1:%@",homePath1);

//secondWay

NSString *homePath2 = NSHomeDirectoryForUser(NSUserName());

NSLog(@"homePath2:%@",homePath2);

//2、获取Documents目录

NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

NSLog(@"documentsPath:%@",documentsPath);

//3、获取Library目录

NSString *librayPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject;

NSLog(@"libraryPath:%@",librayPath);

//获取library/caches目录

NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;

//4、获取tmp目录

NSString *tmpPath = NSTemporaryDirectory();

NSLog(@"tmpth:%@",tmpPath);

5、返回沙盒路径总方法

在数据存储方面,经常会用到存放路径,写一个返回路径的总方法,是很有必要的。

-(NSString *)gainFilePath:(NSString *)fileName fileDirectory:(NSSearchPathDirectory)directoryName

{

NSString *pathDirectory = NSSearchPathForDirectoriesInDomains(directoryName, NSUserDomainMask, YES).firstObject;

NSString *finalPath = [pathDirectory stringByAppendingPathComponent:fileName];

return finalPath;

}

NSString *filePath =  [self gainFilePath:@"nina.txt" fileDirectory:NSDocumentDirectory];

四、获取其他路径的方法

1、plist文件路径

NSString  *strDBPath = [[NSBundle mainBundle] pathForResource:@"Paylist" ofType:@"plist"];

你可能感兴趣的:(iOS 获取沙盒及其它路径的总结)