zoukankan      html  css  js  c++  java
  • 01-IOSCore

    模型

    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:@" "];

        NSLog(@"%@",arrayFromString);

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

        for (NSString *string in arrayFromString) {

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

            MXMessagesViewController *messageViewController = [[MXMessagesViewControlleralloc] init];

            messageViewController.message = messageFromString[2];

            messageViewController.state = messageFromString[0];

        }

       

    }

  • 相关阅读:
    MHA 代码解析(online swtich+master is alive 模式)
    数据库的原理
    mysql performance schema的即时诊断工具-邱伟胜
    javascript 引擎Rhino源代码分析 浅析 实例函数对象及this
    perl dtrace2
    perl指针引用
    操作系统像还原 -BOOK
    [JavaScript]'this'详解
    功能丰富的 Perl:轻松调试 Perl
    PHP内核探索
  • 原文地址:https://www.cnblogs.com/yangmx/p/3582983.html
Copyright © 2011-2022 走看看