Plist文件存储及沙盒路径详解
来源:互联网 发布:淘宝大屏的轮播图 编辑:程序博客网 时间:2024/06/05 06:28
1.plist文件概念
Property List 属性列表文件
它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。
plist文件通常用于储存用户设置,也可以用于存储捆绑的信息。
2.plist文件存储位置
<1>工程里的文件路径
NSBundle * bundle = [NSBundle mainBundle];NSString * path = [bundle pathForResource:@"plistDocument" ofType:@"plist"];NSLog(@"%@",path);
输出后的结果 (Xcode7)
/Users/yourname/Library/Developer/CoreSimulator/Devices/sandBoxDirectory/data/Containers/Bundle/Application/sandBoxDirectory/projectName/plistDocument
<2>沙盒里的文件路径
NSArray * pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSLog(@"pathArray = %@",pathArray);NSString * plistPath = [pathArray objectAtIndex:0];NSLog(@"沙盒存储目录 = %@",plistPath);
输出后的结果 (Xcode7)
/Users/yourname/Library/Developer/CoreSimulator/Devices/sandBoxDirectory/data/Containers/Bundle/Application/sandBoxDirectory/projectName/plistDocument
可以看出,Xcode7中,直接寻找工程中的plist文件,输出的路径与沙盒路径一致,即运行后沙盒中提供了相同的plist文件。
由此可知,这种情况下,我们找到的路径并非原工程中的路径,对该路径下的文件操作必然也跟工程中的文件无关了。当需要把数据写入plist文件并运用于工程中时,可以先创建文件并存储到沙盒中,再移入工程使用;或者直接利用具体路径在原工程的plist文件上进行改动。
读取plist文件
NSArray * array = [NSArray arrayWithContentsOfFile:filePath];NSDictionary * dictionary = [NSDictionary dictionaryWithContentsOfFile:filePath];
3.关于沙盒下的存储目录
默认情况下,每个沙盒含有3个文件夹Documents,Library 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件
Documents
程序中建立的或在程序中浏览到的文件数据会保存在该目录下,iTunes备份和恢复的时候会包括此目录
Library
存储程序的默认设置或其它状态信息;
Caches
存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
tmp
存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
注:iTunes在与iPhone同步时,会备份所有的Documents和Library文件。
iPhone在重启时,会丢弃所有的tmp文件。
那么我们详细看一下沙盒目录的存储情况:
NSArray * pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSLog(@"pathArray = %@",pathArray);
进入NSDocumentDirectory
发现是枚举类型,NSSearchPathDirectory
提供了程序运行后各种文件夹路径
我们看到这几个时已经很明白了(只列举部分):
NSDocumentDirectoryNSLibraryDirectoryNSCachesDirectory
我们需要找什么目录,替换NSSearchPathForDirectoriesInDomains
第一个参数就行了
可能你发现tmp目录呢?没找到啊。的确,NSSearchPathDirectory
里没有tmp目录,可以使用其他的方式寻找:
/** Document的上级目录,即根目录 */NSHomeDirectory()/** tmp目录 */NSTemporaryDirectory()// 可以这么办NSString * filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp/plistDocument.plist"];// 或者直接找到tmp目录下NSString * tmpPath = NSTemporaryDirectory();
另外,模拟器目录和真机目录的区别
我们用NSHomeDirectory()
输出一下便知
- 模拟器目录
/Users/yourname/Library/Developer/CoreSimulator/Devices/sandBoxDirectory/data/Containers/Bundle/Application/sandBoxDirectory
- 真机目录
/var/mobile/Containers/Data/Application/sandBoxDirectory/Documents
4.NSUserDefaults数据存储位置
[[NSUserDefaults standardUserDefaults] setObject:obj forKey:key];
使用这种方式存储的数据,放置在 /Library/Prefereces 下的一个plist文件中
若想移除,直接removeObjectForKey
或是删掉沙盒即可
以上只是简略的说明文件存储路径的问题,文件管理部分内容将在后续进行补充。
- Plist文件存储及沙盒路径详解
- 沙盒路径下存储和读取数据 缓存文件、偏好设置文件、plist文件
- 沙盒路径下Plist文件操作
- plist文件存储
- 沙盒路径和本地数据存储方式plist/归档/偏好设置
- Plist文件详解
- plist 文件详解
- 获取plist文件的路径
- IOS 获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar
- c#读写plist及binary plist文件
- IOS-Plist文件存储(1)
- 使用plist文件存储信息
- ios plist文件存储数据
- NSUserDefault保存的Plist文件在(真机/模拟器)沙盒路径中的位置
- iOS 沙盒路径详解(存储路径的选择)
- iOS UI 沙盒路径的获取及文件的简单存储
- iOS 查找plist文件路径读取plist 文件
- plist文件的导入,找不到该plist文件的路径
- HOOK GetMessageTime有感
- 通过Spring工具类获取classpath下的文件资源--笔记
- 欢迎使用CSDN-markdown编辑器
- JavaScript instanceof 运算符深入剖析
- Eclipse导入外部项目问题总结1
- Plist文件存储及沙盒路径详解
- windows service 2012:[7]搭建FTP服务器
- Android -- 使用inBitmap要注意的地方
- SSH之Hibernate save或update方法已经执行,但是数据库没保存数据
- Ajax实例
- Canvas绘制圆
- LeetCode----Single NumberII
- Redis GEO 测试
- Future 类