转载:http://blog.csdn.net/hello_hwc/article/details/44916909

沙盒的结构如下所示


一 访问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类型的数组 

 2 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_SN_沙盒文件操作及位置的更多相关文章

  1. IOS应用沙盒文件操作

    iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1 ...

  2. iOS 沙盒文件操作

    //获得document +(NSString *)documentsPath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDoc ...

  3. iOS关于沙盒文件拷贝manager.copyItem的一个坑

    记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...

  4. iOS开发——数据持久化Swift篇&(二)沙盒文件

    沙盒文件 //******************** 5.2 文件操作 func use_FileOperations() { //1.获取程序的Home目录 let homeDirectory = ...

  5. 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...

  6. iOS 开发查看应用的沙盒文件

    在iOS开发中,常常需要将一些信息保存到本地,比如说用户的一些搜索历史等.那么,如何查看所保存的文件呢? 这里介绍两种途径来查看应用的沙盒文件. 方法一:通过Xcode来查看,步骤如下: (1): X ...

  7. iOS获取真机沙盒文件、获取真机本地数据

    有时我们需要对真机内的数据进行分析,那么如何获取沙盒所有数据文件呢? 1.设备连接到电脑,打开xcode 2.打开window-devices 3.打开后,选择设备名,选择app,导出数据 4.最后拿 ...

  8. 【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    [iOS系列]-iOS查看沙盒文件图文教程(真机+模拟器) 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString *path = [NSSearchPathFor ...

  9. iOS NSFileManager对沙盒文件及目录添加删除操作

    iOS 使用 NSFileManager对沙盒里面的文件和目录,增加,修改,删除操作: - (void)viewDidLoad { [super viewDidLoad]; self.title = ...

随机推荐

  1. SignalR2.0开发实例之——设置时间、后台其他地方使用集线器、使用自己的连接ID

    一.连接的生命周期设置: 如下: // 该值表示连接在超时之前保持打开状态的时间长度. //默认为110秒 GlobalHost.Configuration.ConnectionTimeout = T ...

  2. [转载]C++ 堆与栈简单的介绍

    在C和C++中,有三种使用存储区的基本方式: [静态存储区(Static   Memory)] 在静态存储区中,连接器(linker)根据程序的需求为对象分配空间.全局变量.静态类成员以及函数中的静态 ...

  3. Objective-C中的copy协议

    NSObject对象是否可以copy自己 NSObject类没有实现NSCopying或者NSMutableCopying协议,但是却有copy以及mutableCopy实例方法.然而,如果用NSOb ...

  4. DHTML【2】--HTML

    通过题目,大家已经明确知道,从这一节开始介绍DHTML中的最基础的部分HTML,对于HTML等概念上一节已经做了概述,这一节不再赘余.在学习HTML之前,先告诉大家一个好消息,HTML不难,比C++. ...

  5. SmartQQ二维码登陆接口分析

    SmartQQ是腾讯在Web上推出的一款单纯的聊天工具,pc端与移动端都可以访问,接下来具体的分析下登陆流程. 网站:http://w.qq.com/ 工具:这个随意能够看到http数据包就可以,浏览 ...

  6. TransactionScope的正确用法(转自:http://blog.csdn.net/greystar/article/details/1359960)

    前一阵贴了一个关于transactionscope的贴子,以为是MS的BUG.后来经过认真仔细的调试,才找到原因. 原来的代码本身是没有没问题的.只是关于事务资源的处理放错了地方.正确的写法应该如下 ...

  7. python类方法与对象方法学习

    class Test_Demo: TEST = 'test_value' def __init__(self,name,age): self.name = name self.age = age #s ...

  8. quartz spring

    简单例子可参考 http://yangpanwww.iteye.com/blog/797563 http://liuzidong.iteye.com/blog/1118992 关于时间配置可参考另一篇 ...

  9. Swift—属性观察者-备

    为了监听属性的变化,Swift提供了属性观察者.属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到. 属性观察者主要有以下两个: willSet:观察者在修改之前调用. didSe ...

  10. svn由于连接方在一段时间后没有正确答复或连接的主机没有反应连接尝试失败

    解决方法,关掉防火墙, service iptables status 查看iptables状态 service iptables restart iptables服务重启 service iptab ...