iPhone 沙盒路径

默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。

Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下;
Library:存储程序的默认设置或其它状态信息;
tmp:提供一个即时创建临时文件的地方。

iTunes在与iPhone同步时,备份所有的Documents和Library文件。
iPhone在重启时,会丢弃所有的tmp文件。

//取得Documents路径的方法:

- (NSString *)documentFolder {

return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

}

//取得Documents中某个文件的路径

NSString *path = [[self documentFolder] stringByAppendingPathComponent:@"image.png"];

//获取tmp目录

NSString *tempPath = NSTemporaryDirectory();

//补充:取得应用程序包(即bundle)的路径

- (NSString *)bundleFolder {

return [[NSBundle mainBundle]bundlePath];

}

一、沙盒(sandbox)
出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其创建一个家目录,这个家目录就是应用程序的沙盒。

家目录下共有四个子目录:

Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
Library 目录:这个目录下有两个子目录:Caches 和 Preferences
    Preferences 目录包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
    Caches 目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

获取这些目录路径的方法:

//1,获取家目录路径的函数:

NSString *homeDir = NSHomeDirectory();

//2,获取Documents目录路径的方法:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *docDir = [paths objectAtIndex:0];

//3,获取Caches目录路径的方法:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);

NSString *cachesDir = [paths objectAtIndex:0];

//4,获取tmp目录路径的方法:

NSString *tmpDir = NSTemporaryDirectory();

//5,获取应用程序程序包中资源文件路径的方法:

//例如获取程序包中一个图片资源(apple.png)路径的方法:

NSString *imagePath = [[NSBundle mainBundle]pathForResource:@"apple"ofType:@"png"];

UIImage *appleImage = [[UIImage alloc]initWithContentsOfFile:imagePath];

//代码中的mainBundle类方法用于返回一个代表应用程序包的对象。

二、文件IO

1,将数据写到Documents目录:

- (BOOL)writeApplicationData:(NSData*)data toFile:(NSString*)fileName {

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *docDir = [paths objectAtIndex:0];

if(!docDir) {

NSLog(@"Documents directory not found!");

return NO;

}

NSString *filePath = [docDir stringByAppendingPathComponent:fileName];

return [data writeToFile:filePath atomically:YES];

}

2,从Documents目录读取数据:

- (NSData *)applicationDataFromFile:(NSString *)fileName {

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *docDir = [paths objectAtIndex:0];

NSString *filePath = [docDir stringByAppendingPathComponent:fileName];

NSData *data = [[NSData alloc]initWithContentsOfFile:filePath];

return data;

}

时间: 2024-10-27 06:54:00

iPhone 沙盒路径的相关文章

iOS开发寻找沙盒路径

寻找沙盒路径方法:(网上帖子的方法不行,可以尝试第一种) 1.直接打印NSHomeDirectory() 即 NSLog(@"%@", NSHomeDirectory()); 对于NSHomeDirectory()官方的描述是: 对于mac打印出来后就会得到沙盒的路径,例如我得到的打印结果是: /Users/zzz/Library/Developer/CoreSimulator/Devices/80CA1C69-E887-4F00-8508-7A9F590204A4/data/Cont

iOS8沙盒路径的变化

iOS8中的的沙盒路径发生了变化 之前是这样的路径,通过NSHomedictionary()获取的家路径 /Users/wupeng/Library/Application Support/iPhone Simulator/7.1/Applications/F9093824FF-6D4C-4D73-884A-696514481F7C/Library/Caches/... 在iOS8中,家路径和Bundle路径进行了分离,也就是说在模拟器中,Bundle包路径和Document library所在

iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)

转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox). 每个应用都有属于自己的存储空间,即沙盒 应用只能访问自己的沙盒,不可访问其他区域 如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以去访问,但是如果要装在真机上

iOS之沙盒机制和如何获取沙盒路径

iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件.文本.属性列表等. 沙盒机制简介 沙盒简述: 每一个APP都有一个存储空间,就是沙盒. APP之间不能相互通信. 沙盒根目录结构:Documents.Library.temp. 简述一下Documents.Library.temp的区别: Documents:用于存储用户数据,iTunes备份和恢复

IOS 沙盒路径的机制

1.前往沙盒目录:在Finder上点->前往->前往文件夹,输入/Users/username/Library/Application Support/iPhone Simulator/  前往 2.沙盒结构:每个沙盒含有3个文件夹:Documents, Library 和 tmp. Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录Library:存储程序的默认设置或其它状态信息: Library/Caches:存放缓

数据持久化以及沙盒路径

什么是沙盒机制 简单对象写入文件 NSFileManager 复杂对象写入文件 数据持久化 什么是数据持久化? 数据的永久存储 为什么要做数据持久化?:存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的,用户下次打开应用程序,还要重新联网去刷新数据,无疑增加了用户的负担 数据持久化的本质:数据保存成文件,存储到程序的沙盒中 什么是沙盒机制? 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在iOS系统内部都放在了统一的文件夹

打开应程序的沙盒路径的方式

第一种打开应程序的沙盒路径的方式 NSSearchPathForDirectoriesInDomains 地址是一个字符串     第一个参数是:枚举值,枚举具体要查找的文件夹[要进入哪个文件夹直接修改其枚举值NSDocumentDirectory:要进Document文件夹]     第二个参数:NSUserDomainMask表示用户的主目录     第三个参数:一般设置为YES表示展示完整的路径     NSSearchPathForDirectoriesInDomains查找沙盒路径的,

去除警告,打电话,发信息,应用程序之间跳转,打印沙盒路径,字符串名字转换方法,包装导航控制器等的代码

从偏好设置中读取值: 打电话代码: 发信息代码: 打印沙盒路径代码: 应用程序之间跳转代码: 跳转到苹果商店代码: 去除警告代码: 根据字符串名称转换成相对应方法的代码: #import "SZMSettingsCell.h" @implementation SZMSettingsCell //选择不同的cell类型 + (UITableViewCellStyle)cellStyleWithDict:(NSDictionary *)dict{ UITableViewCellStyle

沙盒路径

//主目录,方法一 NSString *path = NSHomeDirectory(); NSLog(@"NSHomeDirectory:%@",path); //主目录,方法二 NSString *userName = NSUserName(); NSString *rootPath = NSHomeDirectoryForUser(userName); NSLog(@"NSHomeDirectoryForUser:%@",rootPath); //Docume