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];

        }

       

    }

  • 相关阅读:
    分层图最短路(DP思想) BZOJ2662 [BeiJing wc2012]冻结
    动态规划 BZOJ1925 地精部落
    线性DP SPOJ Mobile Service
    线性DP codevs2185 最长公共上升子序列
    数位DP POJ3208 Apocalypse Someday
    线性DP POJ3666 Making the Grade
    杨氏矩阵 线性DP? POJ2279 Mr.Young's Picture Permutations
    tarjan强连通分量 洛谷P1262 间谍网络
    树链剖分 BZOJ3589 动态树
    二分图 BZOJ4554 [Tjoi2016&Heoi2016]游戏
  • 原文地址:https://www.cnblogs.com/yangmx/p/3582983.html
Copyright © 2011-2022 走看看