IOS SDK详解之沙盒(二)文件操作+文件应该存放的位置
来源:互联网 发布:如何分析sql执行计划 编辑:程序博客网 时间:2024/05/09 01:32
原创blog,转载请注明出处
hello_hwc的CSDN博客
前言:
本文接着上一篇文章介绍沙盒结构的文章,继续讲解如何对沙盒中的文件进行操作,至于操作无非是几种,读,写,创建,删除。本文侧重对各个路径的访问。
上一篇文章的链接http://blog.csdn.net/hello_hwc/article/details/44855547,如果对沙盒真的所知甚少,那么我建议先读完上一篇文章,知道哪些路径是做什么的,然后再看这篇文章
沙盒的结构如下所示
一 访问Bundle
注意Bundle只读,不能写入
创建一个Plist文件
然后对Plist写入一对Key-value
然后访问Bundle
NSURL * fileInBundle = [[NSBundle mainBundle] URLForResource:@"demoPlist" withExtension:@"plist"];NSDictionary * dictionary = [NSDictionary dictionaryWithContentsOfURL:fileInBundle];NSLog(@"%@",dictionary.description);
输出Plist的内容
2015-04-07 10:13:14.135 SandboxDemo[669:58884] { url = "blog.csdn.net/hello_hwc";}
二 访问Document
首先介绍两个函数
//在domainMask下搜素directory,返回NSString类型的数组NSArray * NSSearchPathForDirectoriesInDomains ( NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde );
//在domainMask下搜索directory,返回NSURL类型的数组- (NSArray *)URLsForDirectory:(NSSearchPathDirectory)directory inDomains:(NSSearchPathDomainMask)domainMask
2.1 我们访问Document,先看看当前有什么东西
NSString * documentsURL = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];NSLog(@"%@",toStoreURL);
输出
2015-04-07 10:38:36.082 SandboxDemo[921:79142] /Users/huangwenchen/Library/Developer/CoreSimulator/Devices/158D1CE6-0444-454B-B248-798726D6BC40/data/Containers/Data/Application/1CD56D62-9370-4FF7-84E3-888A4FD73071/Documents
打开虚拟机的沙盒看看当前有什么,可以看到当前Document的路径下是空的
2.2 往document目录下写入一些东西
NSString * documentsURL = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; NSString * toStoreURL = [documentsURL stringByAppendingPathComponent:@"demo.txt"]; NSString * text = @"welcome to my csdn blog;blog.csdn.net/hello_hwc"; BOOL success = [text writeToFile:toStoreURL atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%d",success);
然后,我们再看下Documents目录,成功的写入了文件
2.3 读document目录
NSString * documentsURL = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; NSString * toStoreURL = [documentsURL stringByAppendingPathComponent:@"demo.txt"]; NSString * string = [[NSString alloc] initWithContentsOfFile:toStoreURL encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",string);
输出
2015-04-07 11:19:06.264 SandboxDemo[1128:90655] welcome to my csdn blog;blog.csdn.net/hello_hwc
三 Library
3.1
先看下默认的Library中的内容
然后,我们尝试写入一个文件
NSString * documentsURL = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject]; NSString * toStoreURL = [documentsURL stringByAppendingPathComponent:@"demo.txt"]; NSString * text = @"This file is in library dir"; BOOL success = [text writeToFile:toStoreURL atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%d",success);
再看看目录
读取,代码和Documents十分类似
NSString * documentsURL = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject]; NSString * toStoreURL = [documentsURL stringByAppendingPathComponent:@"demo.txt"]; NSString * string = [[NSString alloc] initWithContentsOfFile:toStoreURL encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",string);
3.2 我们再看看,NSUserDefaults存储在哪个目录
写入NSUSERDefaulsts之前
用以下代码写入
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [defaults setFloat:1.23 forKey:@"FLOAT_KEY"]; [defaults synchronize];
写入之后
不难看出,写入到了library/Preferences/这个目录里了
四 访问Temp
Temp目录下的文件,app应当在不需要的时候进行删除,系统在App不运行的时候,也可能清理这个目录。
默认的
写入Temp
NSString * tempdir = NSTemporaryDirectory(); NSString * filedir = [tempdir stringByAppendingPathComponent:@"temp.txt"]; NSString * message = @"This is in temp dir"; BOOL success = [message writeToFile:filedir atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%d",success);
清理Temp
NSFileManager * defaultmanager= [NSFileManager defaultManager]; NSArray * tempDir = [defaultmanager contentsOfDirectoryAtPath:NSTemporaryDirectory() error:nil]; for(NSString * file in tempDir){ NSString * filepath = [NSTemporaryDirectory() stringByAppendingPathComponent:file]; [defaultmanager removeItemAtPath:filepath error:nil]; }
五 文件应该存放的位置
Documents/
这个目录存放用户数据。存放哪些你希望暴露给用户,由用户决定创建,导入,编辑,删除的文件。例如:对于一个文件编辑器的App,那么对应的文本文件存储在这个目录里。对于一个视频App,那么用户的视频文件应当放在这个目录里。
Library/Application support/
存放App创建的数据,但是这些数据对于用户来说是透明的。例如CoreData的文件就可以存放在这里
tmp
存放那些临时文件,不需要再下次登陆的时候再利用的文件。App应当负责在不需要使用的时候清理这些文件,系统会隔一段时间在App不运行的时候清理这个目录。
Library/Caches/
存放那些比临时文件生命周期时间长,但是比support文件存在时间短的文件。通常用Cache文件来提高系统性能。例如数据库的cache文件。注意,系统可能会删除这个目录来释放磁盘空间,所以这些文件一定是可再生的。比如浏览器的cache文件,即使被删除了,也仍然能正常进行web访问。
欢迎关注我的IOS-SDK详解专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html
- IOS SDK详解之沙盒(二)文件操作+文件应该存放的位置
- jsp文件的存放位置
- Android文件操作的存放位置和形式
- class文件存放位置
- applicationContext文件存放位置
- iOS的文件存放路径
- iOS学习8:iOS沙盒(sandBox)机制(二)之沙盒文件操作
- JavaBean类文件的存放位置
- 系统注册表文件的存放位置
- mapinfo自定义符号文件的存放位置
- yum下载文件的存放位置
- yum下载文件的存放位置
- java国际化文件的存放位置
- Struts2中常用的.properties文件、xml文件的命名方式、存放位置以及详解。
- IOS SDK详解之CALayer(二)
- IOS SDK详解之CALayer(二)
- XP注册表文件存放位置
- sybase 日志文件存放位置
- Git 取消跟踪已版本控制的文件
- pyqt提示对话框
- 如何根据URL链接获取网页标题
- 更新用户充值状态 Monxin专用(PHP代码函数)
- 在线怎么将pdf文件转换成word文档转换器
- IOS SDK详解之沙盒(二)文件操作+文件应该存放的位置
- 更新同步程序的page.php文件 Monxin专用(PHP代码函数)
- 2015 ecshop 微信支付插件v3版 含【PC端微信扫码支付+手机端微信支付】
- Git在开发android系统时常用的技巧及常见错误解决方案
- HTML高级标签之表单应用(二)
- Win8Metro(C#)数字图像处理--2.6图像对比度调整
- 时间 和 时间戳互相转化
- C++语言基础 例程 深复制
- C++语言基础 例程 友元