IOS學(xué)習(xí)筆記之二十二(文件io)

1、NSData和NSMutableData和NSURL

NSData和NSMutableData表示oc的數(shù)據(jù)緩沖區(qū)

作用:

1)、對數(shù)據(jù)讀取NSData

2)、輸出NSData的數(shù)據(jù)


NSURL可以讀取網(wǎng)絡(luò)數(shù)據(jù)

 
2、MSFileManager管理文件和目錄

作用:創(chuàng)建文件、刪除文件、復(fù)制文件、移動文件

 
3、NSFileHandle處理文件io

我們可以用NSFileHandle寫入數(shù)據(jù)到文件里面去、從文件里面讀取數(shù)據(jù)、、


 
4、測試Demo

    int main(int argc, char * argv[]) {
        @autoreleasepool {
            NSLog(@"當(dāng)前用戶名為:%@", NSUserName());
            NSLog(@"當(dāng)前用戶名為:%@", NSFullUserName());
            
            
            
            /**
            NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://www.baidu.com"]];
            NSLog(@"%ld", [data length]);
            char buff[200];
            [data getBytes:buff range:NSMakeRange(0, 20)];
            NSLog(@"%s", buff);
            //NSData to UTF-8 String
            NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"========");
            NSLog(@"%@", str);
                **/
    //        NSString *documentsPath =[self getDocumentsPath];
            
    //        rwxr-xr-x  3 ls  access_bpf    96B Jul 20 21:47 Documents
    //        drwxr-xr-x  5 ls  access_bpf   160B Jul 20 20:45 Library
    //        drwxr-xr-x  2 ls  access_bpf    64B Jul  5 16:24 SystemData
    //        drwxr-xr-x  2 ls  access_bpf    64B Jul  5 16:24 tmp
            //獲取沙盒根路徑
            NSString *homePath = NSHomeDirectory();
            NSLog(@"home Paht is:%@", homePath);
            //獲取 tmp目錄
            NSString *tmpPath = NSTemporaryDirectory();
            NSLog(@"tmpPath is: %@", tmpPath);
            //獲取Documents路徑
            NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *path = [docPaths objectAtIndex:0];
            NSLog(@"document path:%@", path);
            
            NSFileManager *fileManager = [NSFileManager defaultManager];
            //創(chuàng)建文件夾
            NSString *dir = @"dir";
            NSString *dirPath = [path stringByAppendingPathComponent:dir];
            BOOL result = [fileManager createDirectoryAtPath:dirPath withIntermediateDirectories:YES attributes:nil error:nil];
            if (result)
            {
                NSLog(@"make dir success");
            }
            else
            {
                NSLog(@"make dir fail");
            }
            
            //在document目錄下面創(chuàng)建chenyu.txt文件,然后內(nèi)容為hello, I am testing NSFileManager, my name is chenyu
            
            NSString *chenyuPath = [path stringByAppendingPathComponent:@"chenyu.txt"];
            NSString *content = @"hello, I am testing NSFileManager, my name is chenyu";
            BOOL isSuccess = [fileManager createFileAtPath:chenyuPath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
            if (isSuccess) {
                NSLog(@"make chenyu.txt success");
            } else {
                NSLog(@"make chenyu.txt fail");
            }
            
            //讀取chenyu.txt文件的內(nèi)容
            NSString *value = [NSString stringWithContentsOfFile:chenyuPath encoding:NSUTF8StringEncoding error:nil];
            NSLog(@"chenyu.txt value is:%@", value);
            
            
            //新建chenyu1.txt 文件
            NSString *chenyuPath1 = [path stringByAppendingPathComponent:@"chenyu1.txt"];
            NSString *content1 = @"hello, I am testing NSFileManager, my name is chenyu1";
            BOOL result1 = [fileManager createFileAtPath:chenyuPath1 contents:[content1 dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
            if (result1) {
                NSLog(@"make chenyu1.txt success");
            } else {
                NSLog(@"make chenyu1.txt fail");
            }
            //..../Data/Application/91D24910-B3CB-470C-9C62-D54E2815DF4E/Documents/
    //        -rw-r--r--  1 ls  access_bpf    52B Jul 20 23:18 chenyu.txt
    //        -rw-r--r--  1 ls  access_bpf    53B Jul 20 23:18 chenyu1.txt
    //        drwxr-xr-x  2 ls  access_bpf    64B Jul 20 23:08 dir
    //        -rw-r--r--  1 ls  access_bpf    33B Jul 20 22:12 iOS.txt
            
            
            //刪除chenyu1.txt文件
            BOOL result2 = [fileManager removeItemAtPath:chenyuPath1 error:nil];
            if (result2) {
                NSLog(@"delete chenyu1.txt success");
            } else {
                NSLog(@"delete chenyu1.txt fail");
            }
    //        -rw-r--r--  1 ls  access_bpf    52B Jul 20 23:23 chenyu.txt
    //        drwxr-xr-x  2 ls  access_bpf    64B Jul 20 23:08 dir
    //        -rw-r--r--  1 ls  access_bpf    33B Jul 20 22:12 iOS.txt
            
            
            //新建chenyu2.txt 文件
            NSString *chenyuPath2 = [path stringByAppendingPathComponent:@"chenyu2.txt"];
    //        NSString *content2 = @"hello, I am testing NSFileManager, my name is chenyu2";
            BOOL res = [fileManager createFileAtPath:chenyuPath2 contents:nil attributes:nil];
            if (res) {
                NSLog(@"make chenyu2.txt success");
            } else {
                NSLog(@"make chenyu2.txt fail");
            }
            //NSFileHandle寫數(shù)據(jù)到文件
            NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:chenyuPath2];
            [handle writeData:[@"this is useing NSHandle write data to chenyu2.txt" dataUsingEncoding:NSUTF8StringEncoding]];
            //NSFileHandle讀取文件的內(nèi)容
            NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:chenyuPath2];
            NSData *data = [readHandle readDataToEndOfFile];
            NSString *ss = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"read data is:%@", ss);
            //運(yùn)行結(jié)果目錄下的文件
    //        rw-r--r--  1 ls  access_bpf    52B Jul 20 23:33 chenyu.txt
    //        -rw-r--r--  1 ls  access_bpf    49B Jul 20 23:33 chenyu2.txt
    //        drwxr-xr-x  2 ls  access_bpf    64B Jul 20 23:08 dir
    //        -rw-r--r--  1 ls  access_bpf    33B Jul 20 22:12 iOS.txt
            // 用vim打開chenyu2.txt內(nèi)容如下
    //        this is useing NSHandle write data to chenyu2.txt
        }
    }

上面部分部分//是在終端輸入ll命令后打印的信息

 
5、運(yùn)行結(jié)果

    2018-07-21 21:22:02.771753+0800 cyTest[31783:15710817] 當(dāng)前用戶名為:
    2018-07-21 21:22:02.774191+0800 cyTest[31783:15710817] 當(dāng)前用戶名為:
    2018-07-21 21:22:02.774973+0800 cyTest[31783:15710817] home Paht is:/Users/ls/Library/Developer/CoreSimulator/Devices/3FF9B833-FAF8-4C30-A855-3D40A4EAE8A6/data/Containers/Data/Application/BE126DC7-C827-4BD0-8BFC-A517ADC66E6C
    2018-07-21 21:22:02.775214+0800 cyTest[31783:15710817] tmpPath is: /Users/ls/Library/Developer/CoreSimulator/Devices/3FF9B833-FAF8-4C30-A855-3D40A4EAE8A6/data/Containers/Data/Application/BE126DC7-C827-4BD0-8BFC-A517ADC66E6C/tmp/
    2018-07-21 21:22:02.775790+0800 cyTest[31783:15710817] document path:/Users/ls/Library/Developer/CoreSimulator/Devices/3FF9B833-FAF8-4C30-A855-3D40A4EAE8A6/data/Containers/Data/Application/BE126DC7-C827-4BD0-8BFC-A517ADC66E6C/Documents
    2018-07-21 21:22:02.776600+0800 cyTest[31783:15710817] make dir success
    2018-07-21 21:22:02.779185+0800 cyTest[31783:15710817] make chenyu.txt success
    2018-07-21 21:22:02.780033+0800 cyTest[31783:15710817] chenyu.txt value is:hello, I am testing NSFileManager, my name is chenyu
    2018-07-21 21:22:02.782365+0800 cyTest[31783:15710817] make chenyu1.txt success
    2018-07-21 21:22:02.784235+0800 cyTest[31783:15710817] delete chenyu1.txt success
    2018-07-21 21:22:02.785728+0800 cyTest[31783:15710817] make chenyu2.txt success
    2018-07-21 21:22:02.786920+0800 cyTest[31783:15710817] read data is:this is useing NSHandle write data to chenyu2.txt




 


作者:chen.yu
深信服三年半工作經(jīng)驗(yàn),目前就職游戲廠商,希望能和大家交流和學(xué)習(xí),
微信公眾號:編程入門到禿頭 或掃描下面二維碼
零基礎(chǔ)入門進(jìn)階人工智能(鏈接)