模型
1 将数据存储到硬盘,将硬盘上的数据在读回内存
2 文件存储:
NSFileHandle 对文件的读写
NSData 二进制数据
NSString 表示文件路径
NSFileManager(对文件的操作创建、删除、改名、是不是文件夹)
【day0101_NSString】:NSString读取存储用法
NSString 路径用于表达文件的位置(/User/Apple/yz/docu...)
相对路径 apple/
绝对路径 /User/Apple
- (void)viewDidLoad { [super viewDidLoad]; NSString *path = @"/Users/tarena/yz/day01"; NSString *path2 = [path stringByAppendingPathComponent:@"use"]; // 生成新的字符串 NSLog(@"%@",[path stringByAppendingPathComponent:@"use"]); // 拆分一个路径的component NSArray *components = [path pathComponents]; [components enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%@",obj); }]; // /User/apple/documents/ios core // -> day20/nsstring/nsstring/main.m NSString *path3 = @"/User/apple/documents/ios core"; NSString *path4 = @"day20/nsstring/nsstring/main.m"; NSString *newPath = [path3 stringByAppendingPathComponent:path4]; NSLog(@"%@",newPath); // 追加文件后缀 path = [path stringByAppendingPathComponent:@"111"]; path = [path stringByAppendingPathExtension:@"jpg"]; // 补. NSLog(@"%@",path); // 取出文件的扩展名 path = @"/user/yz/a.jpg"; path = [path pathExtension]; NSLog(@"%@",path); // 单词首字母大写 path = @"i love obc"; path = [path capitalizedString]; NSLog(@"%@",path); path = [path uppercaseString]; // 全部大写 path = [path lowercaseString]; // 全部小写 NSLog(@"%@",path); int i = [path hash]; NSLog(@"%d",i); // 获取文件名 或文件夹名 path = @"/use/sdg/gg.jpg"; NSLog(@"%@",[path lastPathComponent]); // 获取父目录 path = @"/a/b/c/d.jpg"; NSLog(@"%@",[path stringByDeletingLastPathComponent]); NSLog(@"%@",[path stringByDeletingPathExtension]);// 去除扩展名 /a/b/c/d }
【day0102_NSFileManager】:文件管理器
NSFileManager(对文件的操作创建、删除、改名、是不是文件夹)
fileExistsAtPath 检测文件是否存在并判断是否是文件夹
createDirectoryAtPath 参数YES表示如果创建文件夹时如果中间没有那个文件夹会自动创建
- (void)viewDidLoad { [super viewDidLoad]; self.fileManager = [NSFileManager defaultManager]; // 检查文件是否存在 NSString *path = @"/Users/tarena/yz/第一阶段(OC-Fd)/Foundation"; if ([self.fileManager fileExistsAtPath:path]) { NSLog(@"文件存在"); } BOOL isDirectory = NO; if ([self.fileManager fileExistsAtPath:path isDirectory:&isDirectory]) { if (isDirectory) { NSLog(@"是文件夹"); } } // 创建文件夹 NSString *createDirectory = @"/Users/tarena/Desktop"; // 参数YES表示如果创建文件夹时如果中间没有那个文件夹会自动创建 [self.fileManager createDirectoryAtPath:[createDirectory stringByAppendingPathComponent:@"myDirectory/dir/dir/dir"] withIntermediateDirectories:YES attributes:Nil error:Nil]; // 如果用NO那么创建文件夹的父文件必须存在才能创建 // 练习 // /Users/tarena/yz/第三阶段(UI核心_Model赵哲)/day01 // QQ/Users // 10086 // images // cache // download // history // 10010 // images // cache // download // history // 10000 // images // cache // download // history NSString *rootPath = @"/Users/tarena/yz/第三阶段(UI核心_Model赵哲)/day01"; NSString *usersDirectory = @"QQ/Users"; NSArray *users = @[@"10086",@"10010",@"10000"]; NSArray *directorys = @[@"images",@"cache",@"download",@"history"]; for (NSString *user in users) { for (NSString *directory in directorys) { [self.fileManager createDirectoryAtPath:[rootPath stringByAppendingPathComponent:[usersDirectory stringByAppendingPathComponent:[user stringByAppendingPathComponent:directory]]] withIntermediateDirectories:YES attributes:Nil error:Nil]; } } NSString *path2 = @"/Users/tarena/Desktop"; NSArray *directoryArray = [self.fileManager contentsOfDirectoryAtPath:path2 error:Nil]; NSLog(@"%@",directoryArray); // 遍历文件夹下所有的子文件夹 for (NSString *subDirectory in directoryArray) { NSString *directoryPath = [path2 stringByAppendingPathComponent:subDirectory]; BOOL isDirectory = NO; if ([self.fileManager fileExistsAtPath:directoryPath isDirectory:&isDirectory] && isDirectory) { NSLog(@"子文件夹名:%@",subDirectory); } } }
【day0103_Sandbox】:Sandbox沙箱
NSHomeDirectory() 获取app根路径
[[NSBundle mainBundle] resourcePath] 获取沙箱根路径
// 获取app根路径 NSString *homePath = NSHomeDirectory(); NSLog(@"%@",homePath); // 获取沙箱根路径 NSString *bundle = [[NSBundle mainBundle] resourcePath]; NSLog(@"%@",bundle); // 使用fileManagager获取documents路径 NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *urls = [fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]; NSURL *url = urls[0]; NSString *documentsPath = [url path]; // 发送path消息将url转为字符串 NSLog(@"%@",documentsPath); // 获取缓存目录 NSURL *url2 = [fileManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask][0]; NSLog(@"%@",[url2 path]); // 获取tmp目录 NSString *tmpPath = NSTemporaryDirectory(); NSLog(@"%@",tmpPath);
【day0104_Note便签】
保存和读取
- (IBAction)barButtonReadNote:(id)sender { NSString *notePath = [NSHomeDirectory() stringByAppendingPathComponent:@"note.txt"]; NSString *stringNote = [NSString stringWithContentsOfFile:notePath encoding:NSUTF8StringEncoding error:Nil]; self.textViewNote.text = stringNote; } - (IBAction)barButtonSaveNote:(id)sender { NSString *stringNote = self.textViewNote.text; NSString *notePath = [NSHomeDirectory() stringByAppendingPathComponent:@"note.txt"]; [stringNote writeToFile:notePath atomically:YES encoding:NSUTF8StringEncoding error:Nil]; self.textViewNote.text = @""; }
【day0105_StringAndObject】:字符串和对象之间的转换
/*
作业
0. 复习
1. TMessage 保存
读取
Documents/messages.txt
1|TXT|今天真高兴
0|TXT|那真是太好了
1|TXT|你在干什么?
0|TXT|我正在帮助全世界的人过上更好的生活
1|TXT|这么好
0|TXT|谢谢你的夸奖,我都害羞了,呵呵
文件 -> 字符串 -> 数组(字符串) -> 数组(对象) -> TRMessageViewController
存储*
点击发送的时候
1) 数组增加对象
2) tableview插入动画
insertRowsAtIndexPathes:withRowAnimation:
3) 把数组的对象翻译成换行的字符串
4) 写入文件
*/
- (void)viewDidLoad { [super viewDidLoad]; NSString *home = NSHomeDirectory(); NSLog(@"%@",home); // 文件 -> 字符串 NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *documentPath = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0] path]; NSLog(@"%@",documentPath); NSString *stringFromFile = [NSString stringWithContentsOfFile:[documentPath stringByAppendingPathComponent:@"messages.txt"] encoding:NSUTF8StringEncoding error:Nil]; NSLog(@"%@",stringFromFile); // 字符串 -> 数组(字符串) NSArray *arrayFromString = [stringFromFile componentsSeparatedByString:@"\n"]; NSLog(@"%@",arrayFromString); // 数组(字符串) -> 数组(对象) for (NSString *string in arrayFromString) { NSArray *messageFromString = [string componentsSeparatedByString:@"|"]; MXMessagesViewController *messageViewController = [[MXMessagesViewController alloc] init]; messageViewController.message = messageFromString[2]; messageViewController.state = messageFromString[0]; } }
01-IOSCore - NSString、NSFileManager、NSBundle、StringAndObjectConvert,布布扣,bubuko.com
01-IOSCore - NSString、NSFileManager、NSBundle、StringAndObjectConvert
原文:http://www.cnblogs.com/yangmx/p/3582983.html