01-IOSCore - NSString、NSFileManager、NSBundle、StringAndObjectConvert

模型

1 将数据存储到硬盘,将硬盘上的数据在读回内存

2 文件存储:

NSFileHandle 对文件的读写

NSData 二进制数据

NSString 表示文件路径

NSFileManager(对文件的操作创建、删除、改名、是不是文件夹)

 

day0101_NSString】:NSString读取存储用法

NSString 路径用于表达文件的位置(/User/Apple/yz/docu...)

相对路径 apple/

绝对路径 /User/Apple

 

- (void)viewDidLoad

{

    [superviewDidLoad];

    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

{

    [superviewDidLoad];

    self.fileManager = [NSFileManagerdefaultManager];

   

    // 检查文件是否存在

    NSString *path = @"/Users/tarena/yz/第一阶段(OC-Fd)/Foundation";

    if ([self.fileManagerfileExistsAtPath:path]) {

        NSLog(@"文件存在");

    }

    BOOL isDirectory = NO;

    if ([self.fileManagerfileExistsAtPath:path isDirectory:&isDirectory]) {

        if (isDirectory) {

            NSLog(@"是文件夹");

        }

    }

   

    // 创建文件夹

    NSString *createDirectory = @"/Users/tarena/Desktop";

    // 参数YES表示如果创建文件夹时如果中间没有那个文件夹会自动创建

    [self.fileManagercreateDirectoryAtPath:[createDirectory stringByAppendingPathComponent:@"myDirectory/dir/dir/dir"] withIntermediateDirectories:YESattributes:Nilerror: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.fileManagercreateDirectoryAtPath:[rootPath stringByAppendingPathComponent:[usersDirectory stringByAppendingPathComponent:[user stringByAppendingPathComponent:directory]]] withIntermediateDirectories:YESattributes:Nilerror:Nil];

        }

    }

   

   

    NSString *path2 = @"/Users/tarena/Desktop";

    NSArray *directoryArray = [self.fileManagercontentsOfDirectoryAtPath:path2 error:Nil];

    NSLog(@"%@",directoryArray);

    // 遍历文件夹下所有的子文件夹

    for (NSString *subDirectory in directoryArray) {

        NSString *directoryPath = [path2 stringByAppendingPathComponent:subDirectory];

        BOOL isDirectory = NO;

        if ([self.fileManagerfileExistsAtPath:directoryPath isDirectory:&isDirectory] && isDirectory) {

            NSLog(@"子文件夹名:%@",subDirectory);

           

        }

    }

}

 

 

day0103_Sandbox】:Sandbox沙箱

NSHomeDirectory()  获取app根路径

[[NSBundle mainBundle] resourcePath] 获取沙箱根路径

    // 获取app根路径

    NSString *homePath = NSHomeDirectory();

    NSLog(@"%@",homePath);

   

    // 获取沙箱根路径

    NSString *bundle = [[NSBundlemainBundle] resourcePath];

    NSLog(@"%@",bundle);

// 使用fileManagager获取documents路径

    NSFileManager *fileManager = [NSFileManagerdefaultManager];

    NSArray *urls = [fileManager URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask];

    NSURL *url = urls[0];

    NSString *documentsPath = [url path]; // 发送path消息将url转为字符串

    NSLog(@"%@",documentsPath);

// 获取缓存目录

    NSURL *url2 = [fileManager URLsForDirectory:NSCachesDirectoryinDomains: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 = [NSStringstringWithContentsOfFile:notePath encoding:NSUTF8StringEncodingerror:Nil];

    self.textViewNote.text = stringNote;

}

 

- (IBAction)barButtonSaveNote:(id)sender {

    NSString *stringNote = self.textViewNote.text;

    NSString *notePath = [NSHomeDirectory() stringByAppendingPathComponent:@"note.txt"];

    [stringNote writeToFile:notePath atomically:YESencoding:NSUTF8StringEncodingerror: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

{

    [superviewDidLoad];

    NSString *home = NSHomeDirectory();

    NSLog(@"%@",home);

    // 文件 -> 字符串

    NSFileManager *fileManager = [NSFileManagerdefaultManager];

    NSString *documentPath = [[fileManager URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask][0] path];

    NSLog(@"%@",documentPath);

    NSString *stringFromFile = [NSStringstringWithContentsOfFile:[documentPath stringByAppendingPathComponent:@"messages.txt"] encoding:NSUTF8StringEncodingerror:Nil];

    NSLog(@"%@",stringFromFile);

    // 字符串 -> 数组(字符串)

    NSArray *arrayFromString = [stringFromFile componentsSeparatedByString:@"\n"];

    NSLog(@"%@",arrayFromString);

    // 数组(字符串) -> 数组(对象)

    for (NSString *string in arrayFromString) {

        NSArray *messageFromString = [string componentsSeparatedByString:@"|"];

        MXMessagesViewController *messageViewController = [[MXMessagesViewControlleralloc] init];

        messageViewController.message = messageFromString[2];

        messageViewController.state = messageFromString[0];

    }

   

}

你可能感兴趣的:(NSString)