iOS_SN_沙盒文件操作及位置
转载: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_沙盒文件操作及位置的更多相关文章
- IOS应用沙盒文件操作
iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1 ...
- iOS 沙盒文件操作
//获得document +(NSString *)documentsPath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDoc ...
- iOS关于沙盒文件拷贝manager.copyItem的一个坑
记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...
- iOS开发——数据持久化Swift篇&(二)沙盒文件
沙盒文件 //******************** 5.2 文件操作 func use_FileOperations() { //1.获取程序的Home目录 let homeDirectory = ...
- 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)
原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...
- iOS 开发查看应用的沙盒文件
在iOS开发中,常常需要将一些信息保存到本地,比如说用户的一些搜索历史等.那么,如何查看所保存的文件呢? 这里介绍两种途径来查看应用的沙盒文件. 方法一:通过Xcode来查看,步骤如下: (1): X ...
- iOS获取真机沙盒文件、获取真机本地数据
有时我们需要对真机内的数据进行分析,那么如何获取沙盒所有数据文件呢? 1.设备连接到电脑,打开xcode 2.打开window-devices 3.打开后,选择设备名,选择app,导出数据 4.最后拿 ...
- 【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)
[iOS系列]-iOS查看沙盒文件图文教程(真机+模拟器) 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString *path = [NSSearchPathFor ...
- iOS NSFileManager对沙盒文件及目录添加删除操作
iOS 使用 NSFileManager对沙盒里面的文件和目录,增加,修改,删除操作: - (void)viewDidLoad { [super viewDidLoad]; self.title = ...
随机推荐
- UIViewController的生命周期(图解)
当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc 创建对象,分配空间2.init (initWithNibName ...
- .NET定时发送邮件
添加一个全局应用程序类Global.asax 代码会在访问网站时运行 Global.asax代码: void Application_Start(object sender, EventArgs e) ...
- C# 汉子增加UTF-8头
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Conv ...
- Sql Server批量停止作业
CREATE Proc [dbo].[Proc_StopJob] as begin declare @I int declare @JobID uniqueidentifier -- 1. creat ...
- android环境搭配 运行android sdk manager时出现错误问题解决
本来前几天已经搭配好android环境开发(eclipse+android sdk+jdk),也已经运行成功了.但是最近因为出现了一些问题,所以把前面搭配好的环境都卸载了.重新搭配的时候发现在运行 s ...
- php 文件操作中几种方法整理
1.获取文件夹下所有文件个数 echo ShuLiang("../0503lianxi"); function ShuLiang($filename) { if(is_dir($f ...
- 【Python】python 多线程两种实现方式
目前python 提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一些包装,可以更 ...
- HSV颜色识别demo
HSV(Hue, Saturation, Value)色彩空间是一种区别与RGB的表示形式.其模型可视为一个倒立的棱锥或圆锥. 其中H为色调,用角度度量,取值范围为0°-360°,从红色开始按逆时针方 ...
- iOS开发:UILabel无法响应点击事件的问题
UILabel 是默认关闭用户的交互的 即: _contentLabel.userInteractionEnabled = NO; 修改之后: _contentLabel.userInteractio ...
- CentOS7配置Nodejs环境安装记录
今天购买了阿里云服务器,系统选的是CentOS7,下面记录下在它上面安装Nodejs环境的过程,本次操作是直接连接的阿里云服务器的管理终端. 1.由于是纯净的环境,先通过以下命令安装nodejs编译及 ...