write主要用于往磁盘目录下写入文件。本篇借write操作也详尽整理一下设备的沙盒目录记忆沙盒目录的操作方法。
沙盒目录下有一下文件夹:
- 】 Document:使用此目录存储用户生成的内容。该目录的内容可以通过文件共享提供给用户; 因此,他的目录应该只包含您可能希望向用户公开的文件。
1.1】Documents/Inbox:使用此目录可以访问外部实体要求您打开应用程序的文件。具体来说,Mail程序会将与您的应用程序关联的电子邮件附件放在此目录中。文档交互控制器也可以在其中放置文件。
该目录的内容由iTunes和iCloud备份。
- 】Library: 这是非用户数据文件的任何文件的顶级目录,该文件夹存放不想被用户看到的数据。该文件夹下有两个子目录。
2.1】 Library/Caches: 保存应用运行时产生的缓存文件,iTunes不会备份,且该目录数据会被清理。
2.2 】Library/Preferences: 保存应用的偏好设置文件,NSUserDefaults保存的数据,plist文件都放在这里,iTunes 会备份。 - 】tmp/ :使用此目录可以编写在应用程序启动之间不需要保留的临时文件。您的应用应该在不再需要时删除此目录中的文件; 但是,当您的应用未运行时,系统可能会清除此目录。
获取文件目录
// 获取沙盒根目录路径
NSString *homeDir = NSHomeDirectory();
// 获取Documents目录路径
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) firstObject];
//获取Library的目录路径
NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) lastObject];
// 获取cache目录路径
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];
// 获取tmp目录路径
NSString *tmpDir =NSTemporaryDirectory();
/*使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录的全路径。
FOUNDATION_EXPORT NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde); 用于查找目录,返回指定范围内的指定名称的目录的路径集合。有三个参数:
1.】NSSearchPathDirectory directory 想要查找的目录类型,是个枚举值。
2.】NSSearchPathDomainMask domainMask 表示“想要从哪个路径区域保护区查找”。
typedef NS_OPTIONS(NSUInteger, NSSearchPathDomainMask) {
NSUserDomainMask =1, // 用户的主目录
NSLocalDomainMask =2, // 当前机器的本地目录
NSNetworkDomainMask =4, //在网络中公开可用的位置
NSSystemDomainMask =8, // 被苹果系统提供的,不可更改的位置 (/System)
NSAllDomainsMask = 0x0ffff // 上述所有及未来的位置
};
3.】BOOL expandTilde 表示是否用波浪线显示部分目录路径。~在*nix系统表示当前用户的Home目录。列如上面获取cache目录路径如果使用NO,那么结果就是cachesDir=~/Library/Caches
*/
文件写入
1.】拼接生成该目录下的文件
NSString * docFile =[documentDirectory stringByAppendingPathComponent:fileName];
2.】往文件写入数据
2.1】NSData写入文件
[data writeToFile:FileName atomically:YES];
2.2】NSString 写入文件
NSError *error = nil;
[string writeToFile:docFile atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (error) {
NSLog(@"写入文件失败:error = %@",error);
}else{
NSLog(@"写入文件成功");
}
2.3】NSDictionary同上类似。
3.】从文件中读取
NSData *data = [NSData dataWithContentsOfFile: docFile];
NSString *string = [NSString stringWithContentsOfFile:docFile encoding:NSUTF8StringEncoding error:nil];
网友评论