// iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.
// documents,tmp,app,Library。
// (NSHomeDirectory())手动保存的文件在documents文件里
// Nsuserdefaults保存的文件在tmp文件夹里
// 1、Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
// 2、AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
// 3、Library 目录:这个目录下有两个子目录:Caches 和 Preferences
// Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
// Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
// 4、tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。
// 获取这些目录路径的方法:
// 1,获取家目录路径的函数:
// NSString *homeDir = NSHomeDirectory();
//// 2,获取Documents目录路径的方法:
// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// NSString *docDir = [paths objectAtIndex:0];
//// 3,获取Caches目录路径的方法:
// NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
// NSString *cachesDir = [paths objectAtIndex:0];
//// 4,获取tmp目录路径的方法:
// NSString *tmpDir = NSTemporaryDirectory();
读写
//1.
NSString *documentPathStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
//2.
NSString *str = @"hello world";
//3.
NSString *strPath = [documentPathStr stringByAppendingPathComponent:@"str.mp4"];
或者 NSString *newPath = [documentPath stringByAppendingString:@"/123.txt"];
//4.
[str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
其他的简单对象如NSArray,NSDictionary,NSData的步骤基本类似.
#数组
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
NSArray *array = @[@"A",@"B",@"C"];
NSString *newPath = [documentPath stringByAppendingPathComponent:@"/eqw.txt"];
[array writeToFile:newPath atomically:YES];
NSLog(@"*********%@",newPath);
#字典
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSDictionary *dict = @{@"张三":@"name",@"男":@"gender"};
NSString *newPath = [documentPath stringByAppendingString:@"/zhangsan.txt"];
[dict writeToFile:newPath atomically:YES];
NSLog(@"********%@",newPath);
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:newPath];
NSLog(@"%@",dic);
#NSData类型
NSData类型稍微麻烦一点,需要转化为相应的格式
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
UIImage *iamge = [UIImage imageNamed:@"1.jpg"];
//第二个参数为压缩系数
NSData *data = UIImageJPEGRepresentation(iamge, 1);
NSString *pathFile = [documentPath stringByAppendingString:@"/7898.jpg"];
[data writeToFile:pathFile atomically:YES];
NSLog(@"%@",pathFile);
UIImage *newImage = [[UIImage alloc]initWithData:data];
UIImageView *imageView = [[UIImageView alloc] initWithImage:newImage];
[self.view addSubview:imageView];
######读取
//NSString
NSString *newStr = [NSString stringWithContentsOfFile:documents encoding:4 error:nil];
NSLog(@"%@",newStr);
//NSArray
NSArray *NewArr = [NSArray arrayWithContentsOfFile:arrPath];
NSLog(@"数组内容:%@",NewArr);
//NSDictionary
NSDictionary *newDic = [NSDictionary dictionaryWithContentsOfFile:DicPath];
NSLog(@"字典内容:%@",newDic);
文件管理器
//1.初始化一个NSFileManager对象(使用单例)
NSFileManager *manager = [NSFileManager defaultManager];
//2.获取根路径
NSString *rootPath = NSHomeDirectory();
//3.创建文件
rootPath = [rootPath stringByAppendingPathComponent:@"/Documents/man"];
//4.创建目录
//createDirectoryAtPath:文件路径
********withIntermediateDirectories:是否在当前路径下创建/text/myApp
[manager createDirectoryAtPath:rootPath withIntermediateDirectories:YES attributes:nil error:nil];
//添加并写入
rootPath = [rootPath stringByAppendingPathComponent:@"/string.txt"];
NSString *str = @"12345";
[str writeToFile:rootPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
#或者可以使用另一种比较简单的创建方法
//初始化一个NSFileManager对象
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *secondPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject] stringByAppendingString:@"secondPathString.txt"]
NSString *stringContent = @"12345";
//第二个参数为文件的内容,由于是NSData类型,所以需要转化
[fileManager createFileAtPath:secondPath contents:[stringContent dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
可以使用一个BOOL类型的对象接收,判断是否成功.
#pragma mark ---- 文件管理 复制 ----
//创建另一个路径,然后复制
[fileManager createFileAtPath:secondPath contents:[stringContent dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
NSString *copyPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject]stringByAppendingString:@"copyPathString.txt"];
BOOL result = [manager copyItemAtPath:secondPath toPath:copyPath error:nil];
if (result) {
NSLog(@"成功");
}else{
NSLog(@"失败啦!!!");
}
####注意,创建另一个路径的时候,只创建路径即可,不要创建出文件,不然会失败的..
#pragma Mark --- 文件管理 删除 ---
//移除的是创建的文件,并不是存放的文件夹
[FileManager removeItemAtPath:rootPath error:nil];
NSLog(@"移除后路径:%@",rootPath);