iOS开发 文件操作 S1 V1
来源:互联网 发布:r数据可视化手册 编辑:程序博客网 时间:2024/05/21 10:50
出处:http://blog.csdn.net/forrest_chen/article/details/7561429
由于iPhone应用程序的沙箱机制,一个运行在iPhone得app,在安装的时候会为其创建一个目录存放其有关的文件夹,该目录下包含有:
1、Appname.app:程序包目录,是一个文件夹,里面包含应用程序本身,程序运行过程中不要对这个目录进行修改,否则会导致程序无法启动;
2、Documents:存放应用程序数据文件和关键的用户文档,所谓关键是因为这些数据不能够被你的应用重新创建,比如user-generated content*。
3、Documents/Inbox:当你的程序被外部访问并打开的时候,外部可以访问该目录的文件*。比如邮件程序将也程序相关的附件存放在该目录下,文件交互控制器也可能把文件存放在该目录下;应用程序可以读取和删除该目录下的文件,但是不能创建新的文件或者写文件。如果用户尝试编辑该目录下的文件,你的应用程序一定会把文件移出该目录*;
4、Library:该目录适用于存放非用户数据文件的顶级目录。可以在该目录下创建子目录,存放需要备份的并不暴露给用户的数据文件;
5、Library/Application Support:存放着除了与用户数据有关的文件的所有应用数据文件。我们可以用这个沐浴露存放应用程序创建的数据文件(data files)、配置文件(configuration files)、模板(templates)或者其他由应用管理的固定或可变的资源文件。比如一个游戏可能会用该目录存放用户购买的新关卡文件。该目录下的所有文件必须再存在在一个子目录中,该子目录的文件名是你的公司名称或者应用程序的 bundle identifier;
6、Library/Caches:该目录应用来存放任何可被应用重新创建的文件。应用程序通常负责管理该目录的内容,并且按需求增加或者删除文件。注意!在iOS5.0以后,系统可能会在系统空间资源紧缺的时候删除掉Caches目录,但这种情况不会出现在应用程序运行过程中。
*7、Library/Frameworks:在MacOS变成中用于存放第三方自定义框架文件。在iOS中,应用程序不能使用自定义框架;
8、Library/Preferences:这个目录包含应用程序的app-specific preference files。您不应该直接创建这些文件,而是应该使用NSUserDefaults类或CFPreferences API来取得和设置应用程序的偏好;
9、tmp:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。当您的应用程序不再需要这些临时文件时,应该将其从这个目录中删除(系统也可能在应用程序不运行的时候清理留在这个目录下的文件)。
应用程序文件的存放应该这样:
1、用户数据存放在Documents目录下,这些数据不能被应用程序重新创建,比如用户文件;
2、应用程序下载的或者生成的可以根据需要进行重新创建的文件,对于ios5.0及之前版本,放在Library/Caches目录下保证他们可以被备份;对于ios5.1之后的版本,放置在Library/Application Support目录下,并应用com.apple.MobileBackup拓展属性*,如果文件数目大,可以存在一个子目录中,对子目录设置拓展属性;
3、数据缓存文件存放在/Library/Caches目录下,所谓数据缓存文件(data cache files)比如数据库缓存文件和可下载内容(杂志、新闻和地图应用中的数据*);
4、临时数据存放在tmp目录下,
如果应用程序需要创建数据量大或频繁变化的文件,则应该考虑将它们存储在Application Home/Library/Caches目录下,而不是/Documents目录。备份大数据文件会使备份过程显著变慢,备份频繁变化(因此必须频繁备份)的文件也同样如此。将这些文件放到Caches目录下可以避免每次同步都对其进行备份。
在应用程序中,找到这些文件夹目录使用C函数NSSearchPathForDirectoriesInDomains来查找:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
参数NSDocumentDirectory常量表示需要查找的是/Documents目录:
(NSCachesDirectory表示/Library/Caches目录,NSApplicationSupportDirectory代表/Library/Application Support目录,NSApplicationDirectory代表/Applications目录)
,NSUserDomainMask常量表示目录搜索限制在应用程序的沙箱中,也就是说只是在应用程序分配的根目录下进行搜索,执行结果返回一个数组paths,由于一个应用程序只有一个Documents目录,所以paths的大小肯定为1,如果用户去取index为1的路径(index从0开始)程序报错。
1、Appname.app:程序包目录,是一个文件夹,里面包含应用程序本身,程序运行过程中不要对这个目录进行修改,否则会导致程序无法启动;
2、Documents:存放应用程序数据文件和关键的用户文档,所谓关键是因为这些数据不能够被你的应用重新创建,比如user-generated content*。
3、Documents/Inbox:当你的程序被外部访问并打开的时候,外部可以访问该目录的文件*。比如邮件程序将也程序相关的附件存放在该目录下,文件交互控制器也可能把文件存放在该目录下;应用程序可以读取和删除该目录下的文件,但是不能创建新的文件或者写文件。如果用户尝试编辑该目录下的文件,你的应用程序一定会把文件移出该目录*;
4、Library:该目录适用于存放非用户数据文件的顶级目录。可以在该目录下创建子目录,存放需要备份的并不暴露给用户的数据文件;
5、Library/Application Support:存放着除了与用户数据有关的文件的所有应用数据文件。我们可以用这个沐浴露存放应用程序创建的数据文件(data files)、配置文件(configuration files)、模板(templates)或者其他由应用管理的固定或可变的资源文件。比如一个游戏可能会用该目录存放用户购买的新关卡文件。该目录下的所有文件必须再存在在一个子目录中,该子目录的文件名是你的公司名称或者应用程序的 bundle identifier;
6、Library/Caches:该目录应用来存放任何可被应用重新创建的文件。应用程序通常负责管理该目录的内容,并且按需求增加或者删除文件。注意!在iOS5.0以后,系统可能会在系统空间资源紧缺的时候删除掉Caches目录,但这种情况不会出现在应用程序运行过程中。
*7、Library/Frameworks:在MacOS变成中用于存放第三方自定义框架文件。在iOS中,应用程序不能使用自定义框架;
8、Library/Preferences:这个目录包含应用程序的app-specific preference files。您不应该直接创建这些文件,而是应该使用NSUserDefaults类或CFPreferences API来取得和设置应用程序的偏好;
9、tmp:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。当您的应用程序不再需要这些临时文件时,应该将其从这个目录中删除(系统也可能在应用程序不运行的时候清理留在这个目录下的文件)。
应用程序文件的存放应该这样:
1、用户数据存放在Documents目录下,这些数据不能被应用程序重新创建,比如用户文件;
2、应用程序下载的或者生成的可以根据需要进行重新创建的文件,对于ios5.0及之前版本,放在Library/Caches目录下保证他们可以被备份;对于ios5.1之后的版本,放置在Library/Application Support目录下,并应用com.apple.MobileBackup拓展属性*,如果文件数目大,可以存在一个子目录中,对子目录设置拓展属性;
3、数据缓存文件存放在/Library/Caches目录下,所谓数据缓存文件(data cache files)比如数据库缓存文件和可下载内容(杂志、新闻和地图应用中的数据*);
4、临时数据存放在tmp目录下,
如果应用程序需要创建数据量大或频繁变化的文件,则应该考虑将它们存储在Application Home/Library/Caches目录下,而不是/Documents目录。备份大数据文件会使备份过程显著变慢,备份频繁变化(因此必须频繁备份)的文件也同样如此。将这些文件放到Caches目录下可以避免每次同步都对其进行备份。
在应用程序中,找到这些文件夹目录使用C函数NSSearchPathForDirectoriesInDomains来查找:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
参数NSDocumentDirectory常量表示需要查找的是/Documents目录:
(NSCachesDirectory表示/Library/Caches目录,NSApplicationSupportDirectory代表/Library/Application Support目录,NSApplicationDirectory代表/Applications目录)
,NSUserDomainMask常量表示目录搜索限制在应用程序的沙箱中,也就是说只是在应用程序分配的根目录下进行搜索,执行结果返回一个数组paths,由于一个应用程序只有一个Documents目录,所以paths的大小肯定为1,如果用户去取index为1的路径(index从0开始)程序报错。
0 0
- iOS开发 文件操作 S1 V1
- iOS开发 文件操作
- ios开发 文件操作
- IOS/iphone开发文件操作
- 常见文件操作 - iOS开发
- 读书笔记《TAOCP》 V1 S1.1
- 读书笔记 《TAOCP》 V1 S1.2
- IOS开发之----文件操作(一)
- IOS开发 沙盒中的文件操作
- IOS开发 沙盒中的文件操作
- iOS开发---常用文件读写操作。
- ios开发之沙盒文件操作
- [iOS开发]沙盒中的文件操作
- iOS开发沙盒机制文件操作
- ios开发之文件路径操作
- IOS开发之----文件操作之NSFileManager(二)
- iOS开发:数据存储之plist文件操作
- iOS开发小技巧 - 1.沙盒中的文件操作
- hdu 4497(最大公约数和最小公倍数)
- 银汇通无线pos机简介
- 【Unity3D自学记录】Unity3D插件之EasyTouch简单用法
- js自定义对象和方法
- 【OJ练习】判断2的次幂
- iOS开发 文件操作 S1 V1
- HDU 4288 Coder
- js无法关闭firefox标签页
- 银汇通支付分析全球pos机市场现状
- POI修改Excel的数据
- SQL宝典第二章 数据库表的创建和管理(数据类型不同和联合)
- Linux netstat命令详解
- OCP 1Z0 053 103
- oracle单行函数