首先, 沙盒机制 ,是ios的安全机制
@1. Bundle文件夹 里面有 ---> (1)代码 * (2)资源文件夹 * (3)配置文件
特性 : (1) 内容在程序运行期间为只读,不能够进行任何的修改
(2) 只有在开发期间进行修改
@2. Documents文件夹
特性 : (1)大小限制(文件夹里的内容会自动上传到iCloud里)
(2)一般放数据库
(3)整个应用程序,从开始到删除一直存在的东西
@3. Library文件夹 里面有 ---> (1)Caches[缓存] * (2)Preference[配置]
(1)Caches 特性: 1. 放图片缓存
2. 网络数据存储(缓存)
(2)Preference 特性: NSUserDefaults存到preference里
@4. tmp文件夹 临时性文件夹 ---> 数据只用一次,即用完就删
例如 : 把压缩包解压, 解压完的东西放在tmp里
NSString *str =@"有只小蜜蜂呀, 飞在花丛中阿, 飞啊! 飞!";
NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", data);
NSArray *array =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES);
NSString *path = [array firstObject];
[data writeToFile:[NSStringstringWithFormat:@"%@/data.txt",path]atomically:YES];
2. 对复杂数据的存储:
复杂类型对象的存储
// 将model类型的对象归档(序列化)为NSData类型的对象,然后将NSData类型对象进行存储
-(void)ModelSave
{
Model *model = [[[Modelalloc] init]autorelease];
model.name = @"张潇";
model.sex = @"男";
model.address =@"China";
// 将model转换为data
// 如果model在数组中,想要存储数组, 也必须用复杂类型对象将数组转化成data,然后进行存储
NSData *data = [NSKeyedArchiverarchivedDataWithRootObject:model];
NSArray *array =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES);
NSString *path = [arraylastObject];
// 将data保存到(写入)目标文件, 实现储存
[data writeToFile:[NSStringstringWithFormat:@"%@/DATA.txt", path]atomically:YES];
无论是字符串,字典还是数组,转换的方式代码都是一样的.
以上是内存上的存储.
*********************************************************
//管理硬盘上的文件
NSFileManager *man = [NSFileManagerdefaultManager];// 单例
// 判断一个文件是否存在
NSArray *array =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES);
NSString *path = [array firstObject];
BOOL judgr = [manfileExistsAtPath:[NSStringstringWithFormat:@"%@/hello", path]];
if (judgr == YES) {
NSString *str = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncodingerror:nil];
NSLog(@"%@", str);
}else{
path = [NSStringstringWithFormat:@"%@/hello.txt", path];
NSString *str = @"hello";
[str writeToFile:pathatomically:YESencoding:NSUTF8StringEncodingerror:nil];
}
二、NSUserDefaults 存储和读取
NSUserDefaults (用户默认) 是被拿来作为用户参数的永久存储地方,当你的应用退出时,或设备关闭时,当前状态可以保存在NSUserDefaults中。值得一提的是 NSUserDefaults是通过获得单例对象来进行存储.
保存:
[[NSUserDefaultsstandardUserDefaults] setObject:name.text forKey:@"name"];
读取:
name.text = [[NSUserDefaultsstandardUserDefaults]objectForKey:@"name"];